2011-03-15 307 views
1

我正在使用asp.net mvc 2在这里,我有一个以下类申请人,它的属性 提到[必需],所以如果我在申请人强类型的项目中添加一个新的视图类和只使用申请人类Html.TextBoxFor(Model => Model.Property1)中的一个属性,当我使用Model.IsValid时,它返回False,因为我没有使用其他所需属性(property2,property3,property4)的提供值。 那么有没有什么方法可以使用相同的申请人类别针对不同的视图,并且还只验证那些我在视图中使用过的属性,而不是那些没有使用过的视图。关于asp.net MVC验证

class Applicant{ 

[Required] 
propert1{get,set;} 
[Required] 
propert2{get,set;} 
[Required] 
propert3{get,set;} 
[Required] 
propert4{get,set;} 

} 
+0

为视图创建相应的视图模型不是更容易吗?你试图保持它太干,导致违反单一责任原则。 – 2011-03-15 11:39:41

+0

@ user460293 DRY代表不要重复自己。在你的案例中 - 视图模型提供多个视图,但是创建多个视图会更容易。 – 2011-03-15 11:42:51

回答

1

所以有任何方法用于使用同一申请人类对于不同的视图,并且还验证只有那些i的视图已经使用不是那些没有在视图中使用属性。

我建议你为每个视图创建视图模型,并验证属性是否适合每个视图的需要。

+0

谢谢好的我会这样做,但我们可以做我要求的吗?我认为这显然是NO – user460293 2011-03-15 12:41:36

+0

@ user460293,不,你不能这样做,因为数据注释验证属性在编译时被烘焙,并且您不能根据正在执行的操作来动态修改/删除其中的某些属性。而且这将是糟糕的设计。 – 2011-03-15 12:43:14