如何在两个视图模型之间建立验证依赖关系?
问题描述:
我向上帝发誓,我曾经在MSDN文章的某篇文章中看到类似于(下方)的内容,但我无法在任何地方找到此属性属性文档。如何在两个视图模型之间建立验证依赖关系?
public class MyViewModel{
[Required]
public bool Important {get;set;}
[ValidationDependsOn("Important")]
public bool HasVIPAccess {get;set;}
}
如果你看一下上面的代码(也许一个坏榜样),我试图建立这样的两个属性之间的关系,即HasVIPAccess财产的确认依赖于房地产的所谓重要的验证。
答
内置的验证属性,它这样做是[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使用此功能
答
您可以通过编写自定义验证属性(这只允许服务器端验证)...这里是一个相关的帖子Creating New Data Annotation Validation Attributes in MVC
但是,如果你想要让客户端的unobstrusive验证工作以及,那么你需要做一些JavaScript的工作。 ..here是另一篇文章,讨论有关创建不显眼的客户端验证... Unobtrusive Client Validation with MVC 3
这是一件事。我想做一些事情,如果A和B都有效,则A有效。我以为我曾经在某处看过它 – Perpetualcoder 2012-04-04 16:36:27