我在C#MVC项目中使用ExpressiveAnnotations。我在使用它来验证视图中的模型时没有任何问题。但是我想通过JavaScript添加更多输入元素来在运行时扩展表单。添加元素后,我使用这些脚本重新创建表单的验证:
data-val-assertthat
这些元素添加了data-val-assertthat-fieldsmap
,data-val-assertthat-expression
,data-val-xxx
和其他一些{{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测试,但一切都按预期工作....