问题描述
|
我有多个MVC 3表单,需要在某些字段上进行表单验证(主要是为了测试空提交)。我的某些视图模型直接来自ORM类,因此我无权访问属性必填字段。我是否需要创建其他类(例如,在ORM类之上创建一个mega-ViewModel)来进行属性赋值,或者是否存在其他选项(例如jQuery)?
解决方法
我的一些视图模型直接来自ORM类
因此,这些不是真实视图模型,而是模型。我建议您为每个视图/表单定义特定的视图模型。视图模型应仅包含视图使用的属性,并使用此特定视图的必要验证属性进行修饰。这样,您可以根据需要处理验证。因此,我的建议是始终创建和使用专门针对给定视图需求量身定制的视图模型,并将它们映射到域模型或从域模型映射出来。
您可以查看以下答案以获得一些想法。
,建议使用视图模型-但是,出于某些原因,许多项目选择不将其用作其基本功能-也许是简单。
因此,要专门回答该问题-您可以定义元数据类,然后再包含与现有类相同的属性。
最佳做法是使用视图模型-但实际上您可以使用现有模型来做到这一点
像这样
//定义您将使用CustomerMetaData作为定义规则的类。
//此名称与您的ORM类相同,并且不需要包含任何内容。
[MetadataType(typeof(CustomerMetaData))
公共部分类客户
{
//这里不需要任何东西
}
公共类CustomerMetaData
{
[需要()]
公用字符串CustomerName {get; set;}
}