Проверка JQuery для вложенной модели - PullRequest
0 голосов
/ 02 октября 2018

У меня есть эта модель:

public class TutorialBindingModel
{
    [Required]
    [RegularExpression(@"[A-Za-z0-9\ \-_]+", ErrorMessage = "You are using invalid characters")]
    [StringLength(128, ErrorMessage = "The {0} must be max 128 characters long.")]
    public string Title { get; set; }

    public List<SampleBindingModel> Samples { get; set; }
}

public class SampleBindingModel
{
    [Required]
    [StringLength(64, ErrorMessage = "The {0} must be max 64 characters long.")]
    [RegularExpression(@"[A-Za-z0-9\ \-_]+", ErrorMessage = "You are using invalid characters")]
    public string Name { get; set; }

    [Required]
    [StringLength(512, ErrorMessage = "The {0} must be max 64 characters long.")]
    [RegularExpression(@"[A-Za-z0-9\ \-_]+", ErrorMessage = "You are using invalid characters")]
    public string Description { get; set; }

}

Когда я заполняю урок, появляется кнопка, которая создает новый образец формы с подходящими полями.Пример формы - частичный вид с моделью SampleBindingModel, поэтому я просто помещаю asp-for в поле и меняю name на Samples[0].Name, например.И я получаю правильную разметку, где поля вложенной модели имеют атрибуты проверки в html:

<input class="item" name="Samples[0].Name" placeholder="Text" type="text" data-val="true" data-val-length="The Name must be max 64 characters long." data-val-length-max="64" data-val-regex="You are using invalid characters" data-val-regex-pattern="[A-Za-z0-9\ \-_]+"
  data-val-required="The Name field is required." id="Name" value="">
<span data-valmsg-for="Samples[0].Name" class="field-validation-valid" data-valmsg-replace="true"></span>

Но проблема в том, что я не могу проверить этот образец формы.Основная модель проверена правильно, но не вложенная.Я думаю, это потому, что я создаю образец формы динамически, и мне нужно установить валидатор в этой форме, но я не могу думать, как это сделать

1 Ответ

0 голосов
/ 03 октября 2018

Решение простое.Проблема заключалась в том, что когда я создаю новый образец с использованием валидатора jquery, он не знает о новых полях, поэтому я удалил валидатор и снова инициализировал его в образце, создав

$("form").removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...