MVC中的Jquery验证导致问题

时间:2012-04-02 14:22:23

标签: javascript jquery asp.net-mvc validation

我正在使用MVC-View模型,EF模型第一

我的View模型中的两个属性出现问题,如下所示:

[Required]
public string TeamName { get; set; }
[Required]
public string ConsultantName { get; set; }

根据用户选择的SubjectTypeName

,可以禁用这两个属性
 [Required]
 public string SubjectTypeName { get; set; }

假设我选择了一个SubjectTypeName值,我的TeamNameConsultantName被禁用,但是当我想要保存表单时,我会收到错误,因为我的ModelState.IsValid会失败。它是[Required]的{​​{1}}。

这有什么简单的解决方案吗?就像一个简单的Jquery代码,从验证中激活"false"TeamName,以便ConsultantName成为ModelState.IsValid

提前致谢!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

您可能需要查看this

答案 2 :(得分:0)

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

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

http://weblogs.asp.net/scottgu/archive/2010/12/10/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3.aspx