动态表单上的表达注释

时间:2016-05-04 07:28:11

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation expressiveannotations

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

data-val-assertthat

这些元素添加了data-val-assertthat-fieldsmapdata-val-assertthat-expressiondata-val-xxx和其他一些{{1}}属性。验证似乎适用于新元素,但错误消息都是空的。我想我必须在这里做错了。任何提示?

1 个答案:

答案 0 :(得分:0)

在这个问题上工作了一段时间,最后找到了我当前的ASP .NET MVC项目的问题。问题隐藏在我如何显示错误中。以前我有以下代码:

$("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 .NET MVC项目中的错误消息为空。我已经尝试在JSFiddle上创建一个simpe测试,但一切都按预期工作....