Ответ 1
Любые идеи?
Да, самое первое, что вам нужно сделать, это избавиться от всех тегов <script>
от вашего частичного представления. Частичные представления не должны содержать никаких скриптов. Частичные представления должны содержать только разметку. Я повторял это много раз и все еще вижу, как люди создают скрипты. Скрипты должны быть зарегистрированы либо в вашем макете, либо в главном представлении, в котором вы предоставили частичный, возможно, переопределив часть скриптов, зарегистрированную в вашем макете, чтобы все сценарии вставили в конец вашего HTML-документа непосредственно перед закрытием </body>
. То, где они принадлежат.
ОК, теперь к реальной проблеме: ненавязчивая проверка не работает из-за коробки с динамически добавленными элементами в DOM - например, отправив запрос AJAX на сервер, который возвращает частичное представление, и это частичный вид затем вводится в DOM.
Чтобы сделать его работу, вам необходимо зарегистрировать эти вновь добавленные элементы с помощью ненавязчивой системы проверки. Для этого вам нужно вызвать $.validator.unobtrusive.parse
для вновь добавленных элементов:
$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");
Вы должны поместить этот код внутри обработчика успеха AJAX, который вводит частичное в ваш DOM. После того, как вы ввели новые элементы, просто вызовите эту функцию.
И если вы не пишете свои запросы AJAX вручную с помощью jQuery ($.ajax, $.post,...), но полагаетесь на некоторые помощники Ajax.BeginForm, а помощники Ajax.ActionLink выполняют эту работу за вас, вам понадобятся чтобы подписаться на обратный вызов OnSuccess в AjaxOptions и поставить там этот код.