Examples

History Key

  • New content
  • Removed content

Recent Versions

Choose two versions to compare, or click the link to view it.

  1. 10. about 2 years by DerAlbertCom
  2. 9. about 2 years by DerAlbertCom
  3. 8. about 2 years by DerAlbertCom
  4. 7. about 2 years by DerAlbertCom
  5. 6. about 2 years by DerAlbertCom
  6. 5. about 2 years by DerAlbertCom
  7. 4. over 2 years by DerAlbertCom
  8. 3. over 2 years by DerAlbertCom
  9. 2. over 2 years by DerAlbertCom
  10. 1. over 2 years by DerAlbertCom
 

Simple Example, an entity model

public class News
{
        public int Id { get; private set; }
        public DateTime Created { get; private set; }
        public DateTime Updated { get; private set; }
        public string Title { get; private set; }
        public WebUser Author { get; private set; }
        public DateTime DisplayStart { get; private set; }
        public DateTime DisplayEnd { get; private set; }
        public bool Hidden { get; private set; }
}

public class WebUser
{
        public int Id { get; private set; }
        public DateTime Created { get; private set; }
        public DateTime Updated { get; private set; }
        public string UserName { get; private set; }
        public string EMail { get; private set; }
        public string PasswordHash { get; private set; }
        public bool Confirmed { get; private set; }
        public bool Active { get; private set; }
}

A ViewModel which is mapped via AutoMapper Mapper.CreateMap<News, PartialNewsModel>();.

    public class PartialNewsModel
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public int AuthorId { get; set; }
        public string AuthorUserName { get; set; }
        public DateTime DisplayStart { get; set; }
        public DateTime DisplayEnd { get; set; }
    }

Here the FluentMetadata. This MetaData can be used from ASP.NET MVC 2 and FluentNHibernate.

    public class NewsMetadata : ClassMetadata<News>
    {
        public NewsMetadata()
        {
            Property(x => x.Created).Is.Required();
            Property(x => x.Updated).Is.Required();
            Property(c => c.Title).Is.Required().Length(255);
            Property(c => c.Author).Is.Required();
            Property(c => c.DisplayStart).Is.Required();
            Property(c => c.DisplayEnd).Is.Not.Required();
        }
    }

And here the additional Metadate for a the ViewModel, which copies the MetaData from News


    public class PartialNewsModelMetadata : ClassMetadata<PartialNewsModel>
    {
        public PartialNewsModelMetadata()
        {
            CopyMetadataFrom<News>();
            Property(x => x.Id).Should.HiddenInput();
            Property(x => x.AuthorId).Should.HiddenInput();
            Property(x => x.Title).Display.Name("Überschrift:");
            Property(x => x.AuthorUserName).Display.Name("Benutzername:").Is.ReadOnly();
            Property(x => x.DisplayStart).Display.Name("Anzeigen ab:");
            Property(x => x.DisplayEnd).Display.Name("Anzeigen bis:");
        }
    }

Validation is implemented for ASP.MVC 2, feel free to add Validators or Dataproviders for other Project-Types.

To use this from ASP.NET MVC 2 you simple the FluentMetadataProvider from the MVC Project. Set the MetadateProviderMetadata-Provider on Startup


            FluentMetadataBuilder.ForAssemblyOfType<News>();
            FluentMetadataBuilder.ForAssemblyOfType<PartialNewsModelMetadata>();
            ModelMetadataProviders.Current = new FluentMetadataProvider();