Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我应该注释视图模型还是模型?_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 我应该注释视图模型还是模型?

Asp.net mvc 我应该注释视图模型还是模型?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,如果我使用MVVM模式填充视图,即除了模型类之外,我还使用视图模型。模型类不与视图对话;视图模型填充视图 在这种情况下,如果我需要使用数据注释进行验证等,我需要注释视图模型类而不是模型类,对吗 例如,[Required]属性是否应标注在: namespace MyApp.ViewModels { public class Category { [Required] [StringLength(50)] public string C

如果我使用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;
        }
    }
}

正确,viewmodel不应使用模型(实体),但可以包含模型属性,例如:

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

public class ViewModel{
     public Person Person{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;}
}
这是对viewmodel的更好使用:

public class ViewModel{
     public string FirstName{get;set;}
     public string LastName{get;set;}
}
是的,您的注释应该在viewmodel上


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

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

public class ViewModel{
     public Person Person{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;}
}

谢谢你的帮助。我对我的问题含糊其辞表示歉意。我正在重新措辞。