在模型中,对于属性 ItemDescription ,我设置了属性 [必需] 根据我的用户界面选择,我会在视图中显示此字段,有时可见,有时则不可见。
当此字段不可见时,如何进行不显眼的验证以忽略 [必需] 属性。
这是我到目前为止所尝试的内容:
$(document).ready(function () {
//doesn't seem to do anything. The field is still validated
$("form").validate().settings.ignore = "#ItemDescription";
//throws an error
$("form").data("validation").settings.ignore = "#ItemDescription";
//doesn't seem to do anything. The field is still validated
$.validator.setDefaults({
ignore: "#ItemDescription"
});
//doesn't seem to do anything. The field is still validated
$("#ItemDescription").removeAttr("data-val");
$("#ItemDescription").removeAttr("data-val-required");
});
我的猜测是我打电话太晚了。 我使用的是jquery 1.9.0和jquery.validate 1.9.0
由于
答案 0 :(得分:0)
你应该做的是。当您隐藏控件时,添加一个包含正确名称的隐藏字段,其中包含您想要的值(可能是默认值)。或者您应该控制hiddenField中的值,以便您不会遇到所需的问题。 Dataannotation不会被忽略。
您使用ViewModel吗?如果不是,那么这样做是个好主意。因此,在ViewModel中,该属性不具备Required。因此,在服务器端,您可以将ViewModel转换为模型时所需的值,以更新数据库。
我希望它清楚。
答案 1 :(得分:0)
$("form").validate({
ignore:'#ItemDescription'
});
ignore
设置允许您指定在验证表单时将被忽略的选择器。在这种情况下,我已经指定了ID选择器。