看起来好像ASP.NET MVC 2 Preview 1 was just released它意味着事情的完成方式在模型方面可能略有不同。允许对其模型中的属性进行验证的DataAnnotation
功能很好,但我不确定在哪里放置它。
我按照Steve Sanderson's book on ASP.NET MVC中的建议手动创建我的模型,这完全适合我。但是,对于来自视图页面的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; }
}
现在斯科特的例子给了我们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
字段,因为它将是数据库中的自动增量字段。现在,这两个示例都将包含在类中,并且可能具有相同的名称。就个人而言,我不认为我的主要模型应该在其中包含这些注释,因为验证数据不应该是他们的责任。那么我应该有不同的名称空间,其中的类具有不同的角色吗?
答案 0 :(得分:1)
在我看来,验证是模型关注的一部分 - 将它们放在一起。
答案 1 :(得分:1)
就个人而言,我有一个模型被发送到视图并发布到控制器,并且通常将它们命名为ProductEditModel。然后验证它并在控制器中转换为我的产品类型。
此视图模型通常包含在某种类型的表示模型中,用于视图中的所有数据,这些数据不会在页面的生命周期中发生变化,例如。菜单项,用户名等。
查看此预告http://serialseb.blogspot.com/2009/05/my-mvc-best-practices-talk.html它会更好地解释它并且是mvc dev的一个非常好的方法