我正在使用MVC-View模型,EF模型第一
我的View模型中的两个属性出现问题,如下所示:
[Required]
public string TeamName { get; set; }
[Required]
public string ConsultantName { get; set; }
根据用户选择的SubjectTypeName
,可以禁用这两个属性 [Required]
public string SubjectTypeName { get; set; }
假设我选择了一个SubjectTypeName值,我的TeamName
和ConsultantName
被禁用,但是当我想要保存表单时,我会收到错误,因为我的ModelState.IsValid
会失败。它是[Required]
的{{1}}。
这有什么简单的解决方案吗?就像一个简单的Jquery代码,从验证中激活"false"
和TeamName
,以便ConsultantName
成为ModelState.IsValid
?
提前致谢!
答案 0 :(得分:1)
您可以查看following blog post,其中说明了如何编写自定义[RequiredIf]
验证属性,该属性将在服务器和客户端上处理条件验证。您可以直接下载包含此验证属性的Mvc.ValidationToolkit。
答案 1 :(得分:0)
如果问题出在客户端,jQuery validate将显示它。正如您所说,当检查ModelState.IsValid时,您的问题在于服务器端的验证。您需要做的是使用CustomValidations来实现您的需求。
您可能需要查看this
答案 2 :(得分:0)
不是根据需要标记这两个属性(因为它们在某些情况下不是这样),我会实现IValidatableObject接口,您可以通过比较几个属性的值来轻松实现这种类型的业务逻辑。
ScottGu有一篇关于如何做到这一点的博客文章: