1

我正在构建一个需要多个字段的搜索表单。单选按钮指示输入需要哪些字段,如下所示:

[ ] Field 1
[.] Field 2
    Field 3
[ ] Field 4

在上述情况下,由于选中了相关的单选按钮,因此现在需要Field 2和。Field 3为此,我实现了RequiredIf验证属性,并且它可以正常工作。

我的问题是其他验证。在这种情况下,Field 1也有一个最小长度验证。如果Field 1有任何不遵守最小长度验证的值,则表单现在无效并且无法提交。

我需要一种方法来禁用对不需要的字段的验证。(并且还可以在选中另一个单选按钮时将它们重新设置)。

由于客户要求,这些字段不能设置为“disabled=disabled”,这可以解决问题。

我已经尝试删除data-val属性或将它们设置false为上述字段,然后再次解析我的表单,失败得很惨。

编辑:只是确保。问题是客户端验证

4

2 回答 2

1

请记住,发生了 2 个验证:客户端和服务器端。因此,删除 data-val 属性将无济于事。

现在,在您的模型中,我认为您正在使用 [attributes] 添加这些验证规则。我认为这种方法不会让您进行条件验证。

在这种情况下,FluentValidation 可以帮助您。http://fluentvalidation.codeplex.com/

这很简单,您应该能够执行以下操作:

RuleFor(model => model.Field).NotEmpty().When(model => model.FieldEnabled);
于 2012-10-12T16:56:28.077 回答
0

将字段设置为“已禁用”按预期工作。客户已经改变了对这个要求的看法。有时它是最好的解决方案。

对于更好的解决方案,这仍然是开放的。

编辑 :

我没想过在验证插件上搜索文档。似乎有一些非常有趣的方法可以使用,例如规则(“删除”,规则)

于 2012-10-11T19:23:49.060 回答