c# - 在某些条件下禁用 mvc3 客户端验证

标签 c# javascript asp.net-mvc asp.net-mvc-3 unobtrusive-validation

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

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

在上述情况下,由于选中了关联的单选按钮,因此现在需要 Field 2Field 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/

相关文章:

jquery - 使用 Ajax 和 Json 填充 JQuery Flot 图表

c# - 将 URL 片段添加到 MVC ActionLink

c# - Log4net 记录到 Oracle 在记录到数字字段时抛出错误?

c# - 在 asp.net Mvc 中将 HTTP POST 请求重定向到 HTTPS POST 请求

javascript - react 嵌套的动态表单

javascript - 如何将子选择器和子元素添加到变量,引用元素

javascript - Facebook JavaScript API

html - 使 Bootstrap 选项卡在 MVC 操作上处于事件状态

c# - Lambda 表达式语法糖?

c# - 我需要加快以下Linq查询