【问题标题】:ExpressiveAnnotations on dynamic form动态形式的ExpressiveAnnotations
【发布时间】:2016-08-29 12:06:10
【问题描述】:

我在 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 属性。验证似乎适用于新元素,但是错误消息都是空的。我想我一定在这里做错了什么。有什么提示吗?

【问题讨论】:

  • 如果验证错误消息为空/缺失,是什么让您说验证“似乎有效”?你的 JavaScript 错误控制台呢?
  • 无效输入会触发错误显示在摘要中,并且相应控件正确突出显示,但摘要中显示的错误消息为空字符串。

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


【解决方案1】:

在这个问题上工作了很长一段时间,终于找到了我当前的 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 上创建一个简单的测试,但一切都按预期工作....

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多