Ответ 1
Вы можете вручную подделать контекст формы. Например, если у вас было частичное представление, которое не содержит элемент <form>
и которое вызывается с помощью AJAX для регенерации некоторых элементов ввода, вы можете сделать это:
@model MyViewModel
@{
ViewContext.FormContext = new FormContext();
}
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
@Html.ValidationMessageFor(x => x.Foo)
Соответствующие элементы ввода теперь будут иметь атрибуты data-*
. Но этого может быть недостаточно. Если вы только обновляете (используя AJAX), то только часть <form>
, но фактически не заменяющая элемент формы в вызове DOM $.validator.unobtrusive.parse
, будет недостаточной. Вам нужно удалить предыдущие проверки, связанные с этим элементом:
success: function(result) {
// we are replacing only a portion of the form
$('#somePartOfTheForm').html(result);
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');
}