我向上帝发誓,我在其中一篇MSDN文章中看到了类似下面的内容,但我无法在任何地方找到此属性文档。
public class MyViewModel{
[Required]
public bool Important {get;set;}
[ValidationDependsOn("Important")]
public bool HasVIPAccess {get;set;}
}
如果你看一下上面的代码(可能是一个不好的例子),我试图在这两种属性之间建立一种关系,以便HasVIPAccess属性的验证取决于名为Important的属性的验证。
答案 0 :(得分:3)
执行此类操作的内置验证属性为[Compare("OtherProperty")]
,这意味着您将此属性设置为的属性必须等于OtherProperty
离
public class MyViewModel{
[Required]
public bool Important {get;set;}
[Compare("Important")]
public bool HasVIPAccess {get;set;}
}
注意:需要MVC 3 +
如果您想要其他验证属性,可以查看Mvc.ValidationTookit
如果你想了解它背后的科学
这是mvc3的新功能,您可以在mvc3中轻松实现这样的自定义属性
因为IsValid现在收集一个ValidationContext参数,该参数包含有关正在执行的验证的信息,如模型的类型和与之关联的元数据,因此您可以使用反射来获取其他属性及其值,CompareAttribute使用此功能
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以通过编写自定义验证属性来执行此操作(这仅启用服务器端验证)...以下是相关帖子Creating New Data Annotation Validation Attributes in MVC
但是......如果你想让客户端不显眼的验证工作,那么你需要做一些javascript工作......这是另一篇关于创建不引人注意的客户端验证的帖子...... {{3 }}