繁体   English   中英

在某些情况下禁用mvc3客户端验证

[英]Disable mvc3 client-side validations under certain conditions

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

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

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

我的问题是其他验证。 在这种情况下, Field 1也具有最小长度验证。 如果Field 1具有不符合最小长度验证的任何值,则该表格现在无效,无法提交。

我需要一种方法来禁用不需要的字段上的验证。 (也可以在选中另一个单选按钮时将其重新设置)。

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

我曾尝试在上述字段中删除data-val属性或将其设置为false ,然后再次解析我的表单,但失败了。

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

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

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

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

这非常简单,您应该可以执行以下操作:

RuleFor(model => model.Field).NotEmpty().When(model => model.FieldEnabled);

将字段设置为“禁用”将按预期工作。 客户对此要求已改变主意。 有时这是最好的解决方案。

这仍然是更好的解决方案。

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM