0

如果我使用 MVVM 模式来填充我的视图,即除了模型类之外,我还使用视图模型。模型类不与视图对话;视图模型填充视图。

在这种情况下,如果我需要使用数据注释进行验证等。我需要注释我的视图模型类而不是我的模型类,对吗?

例如,是否应该在 [Required] 属性上注释:

namespace MyApp.ViewModels
{
    public class Category
    {
        [Required]
        [StringLength(50)]
        public string CategoryName { get; set; }

        [StringLength(255)]
        [AllowHtml]
        public string Description { get; set; }
    }
}

或者应该是这样:

namespace MyApp.Models
{
    public partial class Category
    {
        [Required]
        public virtual string CategoryName
        {
            get;
            set;
        }
    }
}
4

1 回答 1

2

正确,您的视图模型不应使用 Models(entity) 但可以包含模型属性,例如:

//wrong
public class Person{
     public string FirstName{get;set;}
     public string LatsName{get;set;}
}

public class ViewModel{
     public Person Person{get;set;}
}

这是对视图模型的更好使用:

public class ViewModel{
     public string FirstName{get;set;}
     public string LastName{get;set;}
}

是的,您的注释应该在视图模型上。


您也可以在视图模型中将注释设置为复杂类型,但请注意,复杂类型不应是实体/域类,而是仅特定于视图模型的数据模型类,例如:

public class InsertPerson{
     [Required]
     public string FirstName{get;set;}
}

public class EditPerson{
     [Required]
     public string Id{get;set;}

     [Required]
     public string FirstName{get;set;}
}

public class ViewModel{
     public InsertPerson insertPerson{get;set;}
}
于 2012-12-12T11:22:59.630 回答