我正在构建一个需要多个字段的搜索表单。单选按钮指示需要输入哪些字段,如下所示:
[ ] Field 1
[.] Field 2
Field 3
[ ] Field 4
在上述情况下,由于选中了关联的单选按钮,因此现在需要 Field 2
和 Field 3
。为了实现这一点,我实现了 RequiredIf
验证属性,并且它工作正常。
我的问题是其他验证。在本例中,Field 1
还具有最小长度验证。如果字段 1
具有任何不遵守最小长度验证的值,则该表单现在无效且无法提交。
我需要一种方法来禁用对不需要的字段的验证。(并且还能够在选中另一个单选按钮时将它们设置回来)。
由于客户要求,这些字段不能设置为“disabled=disabled”,这解决了问题。
我尝试删除上述字段上的 data-val
属性或将它们设置为 false
,然后再次解析我的表单,但惨败。
编辑:只是确定一下。 问题出在客户端验证。
最佳答案
请记住,发生了 2 个验证:客户端和服务器端。因此,删除 data-val 属性不会有帮助。
现在,在您的模型中,我认为您正在使用[属性]来添加这些验证规则。我不认为这个方法不会让你做条件验证。
在这种情况下,FluentValidation 可以帮助您。 http://fluentvalidation.codeplex.com/
做起来很简单,您应该能够执行以下操作:
RuleFor(model => model.Field).NotEmpty().When(model => model.FieldEnabled);
关于c# - 在某些条件下禁用 mvc3 客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841108/