我有多个MVC 3表单需要在某些字段上进行表单验证(主要是测试空提交)。我的一些视图模型直接来自ORM类,因此我无法访问属性必需字段。我是否需要创建其他类(即,在ORM类之上创建一个超级ViewModel)来填充,以便我可以将这些属性或其他选项存在(例如jQuery)?
答案 0 :(得分:3)
我的一些视图模型直接来自ORM类
所以那些不是真实的视图模型而是模型。我建议您为每个视图/表单定义特定的视图模型。视图模型应仅包含视图使用的属性,并使用此特定视图的必要验证属性进行修饰。这样您就可以根据需要处理验证。所以我的建议是始终创建和使用专门针对给定视图的要求定制的视图模型,并将它们映射到域模型和从域模型映射。
您可以查看following answer的一些想法。
答案 1 :(得分:2)
Viewmodels是推荐 - 但是很多项目出于某种原因选择不将它们用作基本功能 - 也许是简单。
因此,要具体回答这个问题 - 您可以定义元数据类,然后包含与现有类相同的属性。 最佳做法是使用视图模型 - 但您确实可以使用现有模型执行此操作 像这样的东西
//Defines that you are going to use CustomerMetaData as the class to define the rules. //This is named the same as your ORM class and doesnt need to contain anything in it. [MetadataType(typeof(CustomerMetaData))] public partial class Customer { //Don't need anything here } public class CustomerMetaData { [Required()] public string CustomerName {get;set;} }