如何在两个视图模型之间建立验证依赖关系?

问题描述:

我向上帝发誓,我曾经在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使用此功能

+0

这是一件事。我想做一些事情,如果A和B都有效,则A有效。我以为我曾经在某处看过它 – Perpetualcoder 2012-04-04 16:36:27

您可以通过编写自定义验证属性(这只允许服务器端验证)...这里是一个相关的帖子Creating New Data Annotation Validation Attributes in MVC

但是,如果你想要让客户端的unobstrusive验证工作以及,那么你需要做一些JavaScript的工作。 ..here是另一篇文章,讨论有关创建不显眼的客户端验证... Unobtrusive Client Validation with MVC 3