[英]ExpressiveAnnotations on dynamic form
我在C#MVC項目上使用ExpressiveAnnotations。 在驗證視圖內部的模型時,我沒有任何問題。 但是,我想在運行時通過JavaScript添加更多輸入元素來擴展表單。 添加元素之后,我使用以下腳本重新創建表單的驗證:
var form = $("form").removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);
這些元素添加有data-val-assertthat
, data-val-assertthat-fieldsmap
, data-val-assertthat-expression
和其他一些data-val-xxx
屬性。 驗證似乎可以在新元素上進行,但是錯誤消息全部為空。 我想我一定在這里做錯了。 有什么提示嗎?
在這個問題上工作了相當長的時間,終於找到了當前我的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測試,但是一切都按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.