JQuery ненавязчивый - PullRequest
       25

JQuery ненавязчивый

4 голосов
/ 30 июля 2011

Я пытаюсь включить unobtrusive.js в мое представление mvc3, но когда я это делаю, я получаю кучу ошибок при отображении представления. Исключение составляет ненавязчивый скрипт, где бы он ни проверял что-либо на «неопределенное», как эта строка здесь

if(message !== undefined) //Compare against undefined, because an empty message is legal

Я получаю ошибку

Ошибка времени выполнения Microsoft JScript: «undefined» является нулем или не является объектом

Вот мое объявление скрипта для моего просмотра.

<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.11.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.autocomplete.css")" rel="stylesheet" type="text/css" /> 

Ответы [ 4 ]

9 голосов
/ 30 июля 2011

Вам нужно использовать jquery.validate.min.js вместо jquery.validate.unobtrusive.js

7 голосов
/ 13 октября 2012

Если вы хотите:

  • Использовать проверку модели .NET (атрибуты аннотаций данных)
  • Использовать атрибуты данных html5 вместо несемантических классов CSS

Вам нужны оба: jquery.validate И jquery.validate.unobtrusive

Ссылки на сценарии:

Примечание. В этом примере файлы js находятся в папке "public" в проекте / сайте, но вы по возможности используете Microsoft с адресами CDN Google.

<script src="@Url.Content("~/public/js/libs/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/public/js/libs/jquery.validate.unobtrusive.min.js")"></script>

Модель:

public class PimpModel
{
  [Required]
  [StringLength(20)]
  [DisplayName("Pimp Name")]
  public string PimpName { get; set; }
}

Настройки Web.config

 <appSettings>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>

Посмотреть код формы

@model SomeProject.Models.PimpModel
@{
  View.Title = "Index";
  Layout = "~/Views/Shared/_Layout.cshtml";
  Html.EnableUnobtrusiveJavaScript(true);
}
<h2>Pimp</h2>
@using (Html.BeginForm()) {
  @Html.ValidationSummary(true)
  <fieldset>
  @Html.ValidationMessageFor(model => model.PimpName)
  <div class="editor-label">
    @Html.LabelFor(model => model.PimpName)
  </div>
  <div class="editor-field">
    @Html.TextBoxFor(model => model.PimpName)
  </div>
  <input type="submit" value="Save"></fieldset>
}

Помощники html генерируют атрибуты данных в виде html, которые используются ненавязчивой библиотекой, ненавязчивая библиотека использует функции в библиотеке валидации, и это все счастливые дни ...

2 голосов
/ 30 июля 2011

Убедитесь, что в вашей конфигурации есть следующее.

<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
1 голос
/ 23 февраля 2012

Хотя jQuery является открытым исходным кодом, библиотека 'jquery.validate.unobtrusive.min.js' была предоставлена ​​Microsoft (как указано в верхней части моего файла js):

/*
** Unobtrusive validation support library for jQuery and jQuery Validate
** Copyright (C) Microsoft Corporation. All rights reserved.
*/

Попробуйте заменить библиотеку для использования новой замены jquery.validate.min.js

Один из способов заключается виспользуйте Диспетчер пакетов NuGet в Visual Studio для следующих целей:

  1. Щелкните правой кнопкой мыши на Ссылки вашего проекта папка
  2. Выбрать 'Добавить ссылку на пакет библиотеки ...'
  3. Когда откроется окно, выберите «Онлайн» из меню левой боковой панели.
  4. В правом верхнем углу введите 'jquery.validate' и нажмите клавишу ввода.
  5. Найдите 'jQuery Validation' и нажмите кнопку 'Install' .
  6. Изменитьваш код для использования нового имени библиотеки 'jquery.validate.min.js '

Я проверил это, и моя проверка на стороне клиента, похоже, работает без раздражающих исключений при отладке в Visual Studio.

...