ненавязчивая проверка не работает с динамическим контентом
У меня проблемы с попыткой заставить ненавязчивую проверку jquery работать с частичным представлением, которое загружается динамически через вызов AJAX.
Я провел дни, пытаясь заставить этот код работать без удачи.
Вот вид:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
Частичный вид:
@model MvcApplication2.Models.test
@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);
<script type="text/javascript" >
$.validator.unobtrusive.parse(document);
</script>
Модель:
public class test
{
[Required(ErrorMessage= "required field")]
public int MyProperty { get; set; }
}
Контроллер:
public ActionResult GetView()
{
return PartialView("Test");
}
и, наконец, JavaScript:
$(doument).ready(function () {
$.ajax({
url: '/test/getview',
success: function (res) {
$("#res").html(res);
$.validator.unobtrusive.parse($("#res"));
}
});
$("#submit").click(function () {
if ($("form").valid()) {
alert('valid');
return true;
} else {
alert('not valid');
return false;
}
});
Проверка не работает. Даже если я не заполняю информацию в текстовом поле, событие отправки показывает предупреждение («действительный»).
Однако, если вместо того, чтобы динамически загружать представление, я использую@Html.Partial("test", Model)
чтобы визуализировать частичное представление в главном представлении (а я не делаю вызов AJAX), тогда проверка работает просто отлично.
Вероятно, это потому, что если я загружаю контент динамически, элементы управления еще не существуют в DOM. Но я звоню$.validator.unobtrusive.parse($("#res"));
что должно быть достаточно, чтобы позволить валидатору о недавно загруженных элементах управления ...
Кто-нибудь может помочь?