ExpressiveAnnotations на динамической форме

Я использую ExpressiveAnnotations на проекте C# MVC. У меня нет проблем в использовании его при проверке модели внутри представления. Однако я хотел бы расширить форму во время выполнения, добавив больше входных элементов через 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атрибуты. Проверка, кажется, работает на новых элементах, однако сообщения об ошибках все пусты. Я думаю, что я, должно быть, сделал что-то не так. Какой-нибудь намек?

1 ответ

  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. Я пытался создать тест simpe на JSFiddle, но все работает так, как ожидалось.