2017-02-06 105 views

回答

1

如果針對域和視圖模型的DataAnnotations遇到問題(或其中的一部分),我建議使用此方法。

如果不是,請不要downvote。它可能對DataAnnotations標籤有用。

爲了編寫一次DataAnnotations,使用抽象類。在New實體的這個例子中,我將抽象類NewMetaData命名。

DomainCore項目:

namespace myProject.DomainCore 
{ 
    public class New : NewMetaData 
    { 
     public Guid Id { get; set; } 
     public string Title { get; set; } 
     public string Content { get; set; } 
     public DateTime Date { get; set; } 
    } 

    public abstract class NewMetaData 
    { 
     [Required(ErrorMessage = "New Title is required")] 
     [StringLength(maximumLength:150, ErrorMessage = "New Title length must not exceed 150 characters")] 
     [Display(Name = "Title on New")] 
     private string Title { get; set; } //pay attention to privates 

     [Required(ErrorMessage = "New Content is required")] 
     [Display(Name = "Content of New")] 
     private string Content { get; set; } 

     [Required] 
     [Display(Name = "Publish Date")] 
     private DateTime Date { get; set; }   

    } 
} 

而且在UICore項目視圖模型類也必須繼承NewMetaData類:

namespace myProject.UICore.Models.News 
{ 
    public class NewCreateModel: NewMetaData 
    { 
     public string Title { get; set; } 
     [AllowHtml] 
     public string Content { get; set; } 
    } 

    public class NewDetailsModel :NewMetaData 
    { 
     [HiddenInput(DisplayValue = false)] 
     public Guid Id { get; set; } 
     public string Url { get; set; } 
     public string Title { get; set; } 
     public string Content { get; set; } 
    } 
} 

正如你所看到的,您能額外DataAnotations添加到您的屬性,如AllowHtml,HiddenInput和...在UICore中,仍然保持基本註解不變。

這是最簡單的跨項目方法,用於批註一次模型並多次使用它們。

希望它有幫助。