动态表单上的ExpressiveAnnotations



我在C#MVC项目中使用ExpressiveAnnotations。在验证视图中的模型时使用它没有问题。但是,我希望在运行时通过JavaScript添加更多的输入元素来扩展表单。添加元素后,我使用这些脚本重新创建表单的验证:

var form = $("form").removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);

元素添加了data-val-assertthatdata-val-assertthat-fieldsmapdata-val-assertthat-expression和一些其他data-val-xxx属性。验证似乎对新元素有效,但是错误消息都是空的。我想我一定做错了什么。有什么提示吗?

在这个问题上花了很长时间,最终为我当前的ASP.NETMVC项目找到了这个问题。问题隐藏在我如何显示错误中。以前我有如下代码:

$("form").bind("invalid-form.validate", function (form, validator) {
  $(validator.errorList).each(function () {
    $("<li/>").html(this.message).appendTo(msg);
  });
});

问题是this.message对于那些动态添加的元素是空的?!我的解决方法是:

$(validator.errorList).each(function () {
  var error = this.message;
  if (!!!error) {
    error = $(this.element).attr("data-val-" + this.method);
  }
  $("<li/>").html(error).appendTo(msg);
});

我不知道为什么在我的ASP.NETMVC项目中错误消息是空的。我试着在JSFiddle上创建一个简单的测试,但一切都如预期。。。。

相关内容

  • 没有找到相关文章

最新更新