Asp.net mvc 如何在两个ViewModel之间建立验证依赖关系?

Asp.net mvc 如何在两个ViewModel之间建立验证依赖关系?,asp.net-mvc,validation,data-annotations,Asp.net Mvc,Validation,Data Annotations,我向上帝发誓,我在一篇MSDN文章中看到了如下内容,但我在任何地方都找不到此属性文档 public class MyViewModel{ [Required] public bool Important {get;set;} [ValidationDependsOn("Important")] public bool HasVIPAccess {get;set;} } 如果您看一下上面的代码,这可能是一个糟糕的示例,我试图在这两个属性之间建立一种关系,使HasVIPAcce

我向上帝发誓,我在一篇MSDN文章中看到了如下内容,但我在任何地方都找不到此属性文档

public class MyViewModel{
   [Required]
  public bool Important {get;set;}

 [ValidationDependsOn("Important")]
  public bool HasVIPAccess {get;set;}

}

如果您看一下上面的代码,这可能是一个糟糕的示例,我试图在这两个属性之间建立一种关系,使HasVIPAccess属性的验证取决于名为Important的属性的验证。

执行类似操作的内置验证属性是[CompareOtherProperty]这意味着您放置此属性的属性必须等于OtherProperty

注意:需要MVC3+

如果需要其他验证属性,可以检查

如果你想了解它背后的科学

这是mvc3的新特性,在mvc3中可以很容易地实现自定义属性


由于IsValid现在接收一个ValidationContext参数,该参数包含有关正在执行的验证的信息,如模型的类型和与其关联的元数据,因此您可以使用反射来获取其他属性及其值,CompareAttribute利用了此功能执行类似的操作是[CompareOtherProperty],这意味着您放置此属性的属性必须等于OtherProperty

注意:需要MVC3+

如果需要其他验证属性,可以检查

如果你想了解它背后的科学

这是mvc3的新特性,在mvc3中可以很容易地实现自定义属性


由于IsValid现在接收一个ValidationContext参数,该参数包含有关正在执行的验证的信息,如模型类型和与其关联的元数据,因此您可以使用反射获取其他属性及其值CompareAttribute利用此功能

您可以通过编写自定义验证属性此属性仅启用服务器端验证。。。这是一个相关的帖子


但是…如果您想让客户端非结构化验证也能工作,那么您需要做一些javascript工作…下面是另一篇关于创建非结构化客户端验证的文章…

您可以通过编写自定义验证属性来实现这一点,该属性只启用服务器端验证。。。这是一个相关的帖子


然而,如果你想让客户端非干扰性验证也起作用,那么你需要做一些javascript工作……下面是另一篇关于创建非干扰性客户端验证的文章……

这是其中之一。我想做一些事情,比如A是有效的,如果A和B都是有效的。我以为我在什么地方见过它,这是其中之一。我想做一些事情,比如A是有效的,如果A和B都是有效的。我以为我在什么地方见过它
public class MyViewModel{
   [Required]
  public bool Important {get;set;}

 [Compare("Important")]
  public bool HasVIPAccess {get;set;}

}