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>{}