Почему проверка формы не работает в частичных представлениях MVC3? - PullRequest
0 голосов
/ 09 ноября 2011

Кто-нибудь?Есть еще один вопрос, касающийся этого, но единственными ответами были кодирование некоторой проверки JavaScript, которая также отказывается работать с моим частичным представлением («$ не определен»).

В любом случае, я не хочуиспользовать javascript Мне просто нужна простая проверка для обязательных полей, которые нельзя оставить пустыми, числовые поля, для которых требуются целые числа и т. д.

Может ли кто-нибудь пролить свет на проверку и частичные представления?

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Я подозреваю, что вы загружаете эти частичные представления, используя AJAX.Если это так, вам нужно будет вручную вызвать метод $.validator.unobtrusive.parse, как только вы добавите новое содержимое частичного в DOM, как описано в этой статье .

Брэд Уилсон также обсуждалэто в его сообщении в блоге :

Ненавязчивый клиентский скрипт проверки автоматически анализирует начальный набор HTML для правил проверки, когда страница закончила загрузку.Если ваша страница динамически добавляет новый HTML-контент (возможно, через Ajax или через код приложения на стороне клиента), вы можете захотеть проанализировать этот новый HTML-код для проверки клиента на новые элементы HTML.

Для анализа нового HTML выможет вызвать метод jQuery.validator.unobtrusive.parse (), передав ему селектор для HTML, который вы хотите проанализировать.Вы также можете вызвать функцию jQuery.validator.unobtrusive.parseElement () для разбора одного HTML-элемента.

Поскольку ошибка $ не определена , убедитесь, чточто вы включили правильные сценарии:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

Также убедитесь, что вы не ссылаетесь ни на один из сценариев Microsoft * .js.Они устарели и больше не должны использоваться в ASP.NET MVC 3.

Конечно, это только предположение, вы не показали никакого кода, поэтому мы не можем знать, что вы делаете.

0 голосов
/ 30 января 2013

У меня та же проблема, и я обнаружил, что невозможно вызвать $ .validator.unobtrusive.parse () в одной и той же форме дважды.При первоначальной загрузке формы с сервера форма автоматически анализируется ненавязчивой библиотекой.Когда вы динамически добавляете элемент ввода в форму и снова вызываете $ .validator.unobtrusive.parse (), он не будет работать.То же самое касается parseElement ().

Поэтому перед вызовом $ .validator.unobtrusive.parse удалите исходный валидатор и ненавязчивую валидацию из формы следующим образом:

success: function (html) {
                        $("#div-id").append(html);
                        var form = $("#div-id").closest("form");
                        form.removeData('validator');
                        form.removeData('unobtrusiveValidation');
                        $.validator.unobtrusive.parse($("#editorRows"));
                    }
...