在某些情况下,您希望忽略一个或多个验证
client side 中的隐藏字段(并非所有隐藏字段),并且您还希望验证它们以及 server side 中的其他隐藏字段。
在这些情况下,您的ViewModel 中的所有隐藏字段都有验证属性,它们将用于在您发布表单时验证表单 (server side)。
现在您需要一个技巧来验证客户端中的一些隐藏字段(不是全部)。在这些情况下,我建议您使用我的机制!
在目标隐藏输入标签中将data-force-val 设置为true。这是我们用来检测目标隐藏输入的自定义属性,我们希望在客户端验证它们。
// This hidden input will validate both server side & client side
<input type="hidden" value="" name="Id" id="Id"
data-val-required="The Id field is required."
data-val="true"
data-force-val="true">
// This hidden input will validate both server side & client side
<input type="hidden" value="" name="Email" id="Email"
data-val-required="The Email field is required."
data-val="true"
data-force-val="true">
// This hidden input just will validate server side
<input type="hidden" value="" name="Name" id="Name"
data-val-required="The Neme field is required."
data-val="true">
您还可以通过jQuery为隐藏输入设置data_force-val:
$("#Id").attr("data-force-val", true); // We want validate Id in client side
$("#Email").attr("data-force-val", true); // We want validate Email in client side
$("#Name").attr("data-force-val", false); // We wont validate Name in client side (This line is not necessary, event we can remove it)
现在,通过一些简单的代码来激活data-force-val="true" 功能:
var validator = $("#TheFormId").data('validator');
validator.settings.ignore = ":hidden:not([data-force-val='true'])";
注意:validator.settings.ignore 默认值为:hidden