Связанные скрипты не работают MVC

Я связал скрипты jquery Validate, например:

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

и рендеринг в _Layout как

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

Но когда я пытаюсь проверить свою форму при нажатии кнопки, например:

$("form").validate({
                    errorPlacement: function (error, element) {
                        error.insertAfter(element).css("display", "inline");
                    }
                });

Это дает мне ошибку, например:

0x800a01b6 — ошибка выполнения JavaScript: объект не поддерживает свойство или метод «проверить»

Так что кто-нибудь предложить мне для этой проблемы.


person Basavaraj Badiger    schedule 03.07.2013    source источник
comment
Вы уверены, что файлы отображаются в исходном коде? Вы уверены, что ссылаетесь на файл jquery.{version}.js?   -  person Dejan.S    schedule 03.07.2013
comment
JqueryVal зависит от Jquery! Вы включаете это перед JqueryVal?   -  person Fals    schedule 05.07.2013
comment
сначала попробуйте @Scripts.Render("~/bundles/jquery"), а затем попробуйте включить это @Scripts.Render("~/bundles/jqueryval")   -  person Idrees Khan    schedule 05.07.2013


Ответы (2)


Среда выполнения отделяет минифицированные версии от неминифицированных (на основе стандартных соглашений об именах JavaScript), поэтому, если вы укажете путь "~/Scripts/jquery.unobtrusive*", спецификатор будет включать jquery.unobtrusive.js, когда минимизация отключена, и jquery.unobtrusive.min.js, когда минимизация включена.

Проверьте, есть ли у вас файлы jquery.unobtrusive.min.js и jquery.validate.min.js в папке Scripts.

Чтобы включить минимизацию вручную, вставьте BundleTable.EnableOptimizations = true; после добавления пакетов.

РЕДАКТИРОВАТЬ:

Ваша ошибка говорит о том, что метод проверки еще не объявлен. Прежде чем вызывать $("form").validate(), проверьте, находится ли ваш @Scripts.Render("~/bundles/jqueryval"), или перенесите вызов validate в jQuery(callback)< /а> вот так:

$(function(){
    $("form").validate({
                    errorPlacement: function (error, element) {
                        error.insertAfter(element).css("display", "inline");
                    }
                });
})

Это будет ждать, пока весь документ не будет загружен.

person Oleksii Aza    schedule 03.07.2013

Не могли бы вы убедиться, что UnobtrusiveJavaScriptEnabled включен в web.config?

  <appSettings>
    ...
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    ...
  </appSettings>
person Win    schedule 03.07.2013
comment
UnobtrusiveJavaScriptEnabled имеет значение true, но все равно не работает - person Basavaraj Badiger; 04.07.2013