Javascript MVC中的Jquery验证导致问题

Javascript MVC中的Jquery验证导致问题,javascript,jquery,asp.net-mvc,validation,Javascript,Jquery,Asp.net Mvc,Validation,我使用的是MVC视图模型,EF模型优先 我的视图模型中的两个属性有问题,如下所示: [Required] public string TeamName { get; set; } [Required] public string ConsultantName { get; set; } 根据用户选择的SubjectTypeName,这两个属性可能会被禁用 [Required] public string SubjectTypeName { get; set; } 假设我选择了Subjec

我使用的是MVC视图模型,EF模型优先

我的视图模型中的两个属性有问题,如下所示:

[Required]
public string TeamName { get; set; }
[Required]
public string ConsultantName { get; set; }
根据用户选择的SubjectTypeName,这两个属性可能会被禁用

 [Required]
 public string SubjectTypeName { get; set; }
假设我选择了SubjectTypeName值,我的
TeamName
ConsultantName
被禁用,但是当我想保存表单时,我会得到错误,因为我的
ModelState.IsValid
为false。而正是
[必需]
使其成为
的“假”

有什么简单的解决办法吗?像一个简单的Jquery代码,从验证中禁用
TeamName
ConsultantName
,这样我的
ModelState.IsValid
就变成了
“true”


提前谢谢

您可以查看,其中说明了如何编写自定义的
[RequiredIf]
验证属性,该属性将在服务器和客户端上处理条件验证。您可以直接下载包含此验证属性的。

如果问题在客户端,jQuery validate将显示它。正如您所说,当选中ModelState.IsValid时,您的问题在于服务器端的验证。您需要做的是使用CustomValidations来实现所需的功能


您可能希望签出而不是根据需要标记这两个属性(因为在某些情况下它们不是),我将实现IValidatableObject接口,您可以通过比较几个属性的值来实现这种类型的业务逻辑

ScottGu有一篇关于如何做到这一点的博客文章:


IValidatableObject不支持客户端验证,这可能会导致一些奇怪的结果(例如页面不验证客户端,修复报告的错误,然后从服务器端获取第一次未报告的错误)。这可能会让你的用户感到恼火。你不再为这些场景推荐FluentValidation了吗?当然,我推荐FluentValidation。很明显,我甚至不再提它:-)老实说,我有点厌倦了重复它。我可以理解:)只是好奇你是否因为任何原因被推迟FV。我自己仍然喜欢它。哦,不,我在创建的每个ASP.NET MVC项目中都使用FluentValidation。它在我的自定义项目模板中:-D[Requiredif]要求对象TargetValue?我不明白?我应该在里面打什么?