MVC 3不显眼的验证 - 有条件地禁用/启用验证(MVC 3 unobtrusive valida

2019-06-26 18:46发布

我有有一个选项,以输入尺寸的形式:

  • 宽度和高度
  • 宽度
  • 高度

我有两个div容器,我隐藏/显示,这取决于三个选项中选择:

<div class="editor-field" id="width-container">
     @Html.EditorFor(model => model.Width)
     @Html.ValidationMessageFor(model => model.Width)
</div>

<div class="editor-field" id="height-container">
     @Html.EditorFor(model => model.Height)
     @Html.ValidationMessageFor(model => model.Height)
</div>

如果选择高度,宽度则不会在表格上显示,我怎么能禁止在时尚输入栏宽不显眼的验证,这将使如果用户更改他们的想法,即消除数据 - 我轻松地复权*属性是不是一种选择。 我很高兴地创建一个CustomAttribute类来处理这个,但我不希望有破解标准的jQuery的文件,使这项工作,因为它使得更新到新版本头疼走下赛场。 如果一切都失败,我会用我惯用的伎俩增加值0到田间地头的时候,他们是不可见的,然后删除它显示,当他们。

编辑:

请留意,当宽度不可见它不是一个“隐藏”的领域本身,它只是一个输入变量,因为父div有显示器的风格,这不是对用户可见:无

Answer 1:

您可以设置jQuery的验证多数民众赞成处理您的不显眼的验证,忽略隐藏元素:

jQuery.validator.defaults.ignore = ":hidden";

// the line above is outside any $(document).ready(...) or similar
$(document).ready(function(){
    ...
});
...


Answer 2:

如此看来,这是回答我的问题(我去谷歌再次狩猎难以寻找的东西,没有涉及到“隐藏”字段):

https://stackoverflow.com/a/7673985/491950

$("#height-container input[type='text']").attr("disabled", "disabled");

谢谢您的回答。



文章来源: MVC 3 unobtrusive validation - conditionally disable/enable validation