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开发的一个非常好的方法