簡體   English   中英

動態形式的ExpressiveAnnotations

[英]ExpressiveAnnotations on dynamic form

我在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 .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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM