因此,我从this Microsoft provided Example拿了一些代码,它允许我使用jquery validate unobtrusive库来解析从我的服务器返回的验证错误消息并显示它们UI。他们有一个video demonstrating this。所以,这里是一块Javascript代码我使用:ASP.NET MVC 3不显眼的jQuery验证不会显示自定义错误消息不止一次
$.validator.addMethod("failure", function() { return false; });
$.validator.unobtrusive.adapters.addBool("failure");
$.validator.unobtrusive.revalidate = function (form, validationResult) {
$.removeData(form[0], 'validator');
var serverValidationErrors = [];
for (var property in validationResult) {
//var elementId = property.toLowerCase();
var item = form.find('#' + property);
if (item.length < 1) { item = form.find('#' + property.replace('.', '_')); }
serverValidationErrors.push(item);
item.attr('data-val-failure', validationResult[property].join(', '));
jQuery.validator.unobtrusive.parseElement(item[0]);
}
form.valid();
$.removeData(form[0], 'validator');
$.each(serverValidationErrors, function() {
this.removeAttr('data-val-failure');
jQuery.validator.unobtrusive.parseElement(this[0]);
});
};
所以再经过手柄误差函数的AJAX形式后我会做这样的事情:
$.validator.unobtrusive.revalidate(form, { 'PhysicalAddress.CityName': ['You must select a valid city'] });
凡PhysicalAddress 。城市名称是我的viewmodel属性和html输入字段的名称。因此,它知道将验证消息放在正确的html元素旁边。
这工作1次。然后,当他们打再次提交和我的代码再次调用unobtrusive.revalidate方法..它不工作。它只显示验证消息一次,然后验证消息消失。
有没有人有任何想法,为什么这可能会发生?..我通过revalidate方法的步骤,没有错误抛出,一切似乎它应该工作..但由于某种原因不显眼的库不重新,绑定验证错误消息。
感谢
我很感兴趣,谢谢 – 2012-04-02 14:33:45