jquery - metanit - asp.net mvc валидация на клиенте



Проверка на стороне клиента не работает в ASP.NET MVC5 с помощью Bootstrap (6)

Запустив Visual Studio 2013, я создал новый проект ASP.NET MVC (5) с помощью Bootstrap.

Тем не менее, я не могу получить ненавязчивую проверку на стороне клиента.

У модели есть атрибуты [Required] для соответствующих свойств, а в представлении есть теги ValidationMessageFor... для каждого поля в форме.

Однако отправка формы приводит к тому, что форма возвращается к серверу до появления сообщений проверки.

Используя NuGet, я установил jquery.validate и jquery.validate.unobtrusive и добавил их в пакет jquery в App_Start .

Тем не менее он продолжает упрямо возвращаться к серверу. Инструменты F12 dev не показывают ошибок / предупреждений JS.

Кто-нибудь еще сталкивается с этой проблемой (ничего не видит в SO, относящейся к MVC 5 конкретно), и есть ли у вас какие-либо идеи?


В нижней части страницы добавьте:

@Scripts.Render("~/bundles/jqueryval")

и все будет хорошо работать.



У меня была та же проблема, мое решение ясно показывает всю историю в браузере (кеш, куки, форма, ...), и все работает правильно.


У меня была такая же проблема, когда я играл с моим первым проектом MVC. Проблема заключалась в том, что я не включил элементы ввода в элемент формы . Да, очень глупо. Убедитесь, что вы создали форму, например:

@using (Html.BeginForm())
{
    @Html.EditorFor(model => model.FieldA)
    @Html.ValidationMessageFor(model => model.FieldA)

    @Html.EditorFor(model => model.FieldB)
    @Html.ValidationMessageFor(model => model.FieldB)

}

У меня такая же проблема. Сравнивая сгенерированный HTML с работающим сайтом, я заметил, что в конце документа было следующее:

<script src="/bundles/jqueryval"></script>

... тогда как пучок должен был быть расширен следующим образом:

<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

Я посмотрел в App_Start / BundleConfig.cs, и, конечно же, пакет проверки JQuery не был определен в RegisterBundles . Мне пришлось добавить:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.validate*"));

Почему этого не хватает, я не знаю. Я начал с нового, чистого проекта.

Это довольно дрянной, что нет ошибки времени компиляции, когда вы ссылаетесь на неопределенный пакет. Даже постоянная ошибка во время выполнения была бы лучше, чем молчащий сбой. Так много времени потрачено впустую!

EDIT: получается, что у меня не было скриптов проверки JQuery в моем проекте. Я должен был добавить их через NuGet («Unobruusive Validation от Microsoft JQuery»).


Я думаю, что @ Html.ValidationMessageFor отсутствует в шаблоне. Я получаю ошибки, но не сообщения.





asp.net-mvc-5