我正在构建一个需要多个字段的搜索表单。单选按钮指示输入所需的字段,如下所示:
[ ] Field 1
[.] Field 2
Field 3
[ ] Field 4
在上述情况下,由于选中了相关的单选按钮,因此现在需要Field 2
和Field 3
。为此,我实现了RequiredIf
验证属性,它可以正常工作。
我的问题是其他验证。在这种情况下,Field 1
也具有最小长度验证。如果Field 1
有任何不符合最小长度验证的值,则该表单现在无效且无法提交。
我需要一种方法来禁用对不需要的字段进行验证。(并且还可以将其设置为另一个单选按钮)。
由于客户要求,这些字段无法设置为“disabled = disabled”,从而解决了问题。
我已尝试删除data-val
属性或在所述字段上将其设置为false
,然后再次解析我的表单,失败了。
编辑:确定。 问题是客户端验证。
答案 0 :(得分:1)
请记住,有2个验证发生:客户端和服务器端。因此,删除data-val属性将无济于事。
现在,在您的模型中,我认为您正在使用[attributes]添加这些验证规则。我不认为这种方法不会让你做条件验证。
在这种情况下,FluentValidation可以帮助您。 http://fluentvalidation.codeplex.com/
这很简单,你应该能够做到这样的事情:
RuleFor(model => model.Field).NotEmpty().When(model => model.FieldEnabled);
答案 1 :(得分:0)
将字段设置为“已禁用”可按预期工作。客户已经改变了对这个要求的看法。有时它是最好的解决方案。
对于更好的解决方案,这仍然是开放的。
编辑:
我没想过在验证插件上搜索doc。似乎有一些非常有趣的方法可供使用,如rules ( "remove", rules )。