rauhryan
5/2/2011 - 2:59 PM

AlbumCrudAction.cs

    public class Album : DomainEntity
    {
        public virtual int OriginalId { get; set; }
        [Required]
        public virtual string Name { get; set; }
        public virtual decimal Price { get; set; }
        public virtual string Slug { get; set; }
        public virtual string AlbumArtUrl { get; set; }
        public virtual string ArtSmall { get; set; }
        public virtual string ArtMedium { get; set; }
        public virtual string ArtLarge { get; set; }

        public virtual Genre Genre { get; set; }
        public virtual Artist Artist { get; set; }

        public virtual IList<Track> Tracks { get; set; }

        public virtual IList<OrderDetail> OrderDetails { get; set; }
    }
<%@ Page Title="" Language="C#" MasterPageFile="~/Shared/Site.Master" AutoEventWireup="true" CodeBehind="EditAlbum.aspx.cs" Inherits="FubuMusicStore.Actions.api.Albums.Edit" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<% this.Script("validation"); %>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%=this.FormFor(Model) %>

    <%=this.Edit(x => x.Album.Name).AlterBody(tag => tag.AddClass("required")) %>
    <%=this.Edit(x => x.Album.Price).AlterBody(tag => tag.AddClass("required"))%>
    <%=this.Edit(x => x.Album.Slug).AlterBody(tag => tag.AddClass("required"))%>
    <%=this.Edit(x => x.Album.ArtSmall).AlterBody(tag => tag.AddClass("required"))%>
    <%=this.Edit(x => x.Album.ArtMedium).AlterBody(tag => tag.AddClass("required"))%>
    <%=this.Edit(x => x.Album.ArtLarge).AlterBody(tag => tag.AddClass("required"))%>
    <input type="submit" value="Save" />
<%=this.EndForm() %>
</asp:Content>
  public class AlbumCrudAction 
    {
        private readonly IRepository _repository;

        public AlbumCrudAction(IRepository repository)
        {
            _repository = repository;
        }
        
        [UrlForNew(typeof(Album))]
        public EditAlbumModel Edit(EditAlbumRequest request)
       {
            var album = _repository.FindBy<Album>(x => x.Slug == request.Slug);
            return new EditAlbumModel{Album = album};
       }

        public FubuContinuation Post(EditAlbumModel album)
        {
            return FubuContinuation.RedirectTo(new ListAlbumsRequest());
        }
    }

    public class EditAlbumRequest : IRequestBySlug
    {
        public string Slug { get; set; }
    }

    public class EditAlbumModel
    {
        public Album Album { get; set; }
    }

    public class Edit : FubuPage<EditAlbumModel>{}