Во-первых, если ваше частичное представление, добавьте это вверху
<%
if (Html.ViewContext.FormContext == null)
{
Html.ViewContext.FormContext = new FormContext();
}
%>
Это должно добавить ненавязчивые атрибуты валидации data-val- * к сгенерированному контенту.И в вашей функции успешной загрузки ajax вставьте this в конце
$().ready(function () {
$("#add-phone").click(function () {
$.ajax({
url: '<%: Url.Action("GetNewAddress") %>',
success: function (data) {
$(".phone-numbers").append(data);
$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");
}
});
});
});
На этот раз он должен автоматически проанализировать загруженный контент и применить к нему проверки
Iвзглянул на ваш проект и обнаружил, что причина динамической проверки не работает.Практически у вас есть больше проблем, чем проверка.Во-первых, техника, которую вы используете для рендеринга адресов, неверна.Таким образом, все вводимые вами данные имеют одинаковые значения идентификатора и имени.Вот почему валидатор не может отличить динамически добавляемый контент от предыдущего, он считает, что все входные данные одинаковы, и проверяет все улицы в соответствии с первой улицей.Более того, если вы разместили этот контент для создания на сервере, механизм связывания модели asp.net mvc не смог бы связать массив улиц - по той же причине, по которой валидатор не может работать.Взгляните на эту статью для правильного создания содержимого списка на стороне клиента.А для последующего динамического внедрения вы можете изменить код контроллера следующим образом:
public ActionResult GetNewAddress(string id)
{
ViewData.TemplateInfo.HtmlFieldPrefix = string.Format("[{0}]", id);
return View("EditorTemplates/Addresses", new Address());
}
Передача правильного идентификатора со стороны клиента зависит от вас :).
Кроме того, вы не правильно используете шаблоны EditorTemplates, они предназначены для использования с Html.DisplayFor()
, и вам не нужно указывать их имя вручную.Читайте о них больше, там есть десятки статей в сети