Asp.net mvc 关于管理模型的建议[ASP.NET MVC]

Asp.net mvc 关于管理模型的建议[ASP.NET MVC],asp.net-mvc,Asp.net Mvc,就模型而言,这意味着事情的处理方式可能略有不同。允许对其模型中的属性进行验证的DataAnnotation功能很好,但我不确定该放在哪里 我按照中的建议手动创建模型,这非常适合我。但是,对于来自视图页面的POST数据,我应该有一个单独的模型吗?假设我正在创建产品项,我的主要模型可能如下所示: public class Product { [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int ProductID { g

就模型而言,这意味着事情的处理方式可能略有不同。允许对其模型中的属性进行验证的
DataAnnotation
功能很好,但我不确定该放在哪里

我按照中的建议手动创建模型,这非常适合我。但是,对于来自视图页面的POST数据,我应该有一个单独的模型吗?假设我正在创建产品项,我的主要模型可能如下所示:

public class Product {
    [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int ProductID { get; set; }
    [Column] public string ProductName { get; set; }
    [Column] public string ProductDescription { get; set; }
    [Column] public double ProductCost { get; set; }
}
现在,Scott的示例为我们提供了
DataAnnotations
,因此您可以:

public class Product {
    public int? ProductID { get; set; }

    [Required(ErrorMessage="Must enter a product name!")]
    public string ProductName { get; set; }

    public string ProductDescription { get; set; }

    [Range(1, 500, ErrorMessage="Too expensive!")]
    public double ProductCost { get; set; }
}

后一个示例将有一个可空的
ProductID
字段,因为它是数据库中的一个自动递增字段。现在,这两个示例都包含在类中,并且可能具有相同的名称。就个人而言,我认为我的主要模型中不应该有这些注释,因为验证数据不应该是他们的责任。因此,我是否应该使用单独的名称空间,其中的类具有不同的角色?

在我看来,验证是模型关注的一部分-将它们放在一起。

就我个人而言,我有一个模型发送到视图并发布到控制器,通常将它们命名为ProductEditModel。然后在控制器中验证并转换为我的产品类型

对于视图中在页面生命周期内不会改变的所有数据(如菜单项、用户名等),此视图模型通常封装在某种类型的表示模型中

查看这个sreecast,它将更好地解释它,并且是mvc开发的一个非常好的方法