WebForms UnobtrusiveValidationMode требует ScriptResourceMapping для jquery

В моем веб-приложении появляется следующая ошибка:

WebForms UnobtrusiveValidationMode требует ScriptResourceMapping для 'jquery'. Добавьте ScriptResourceMapping с именем JQuery (с учетом регистра).

Описание: Необработанное исключение произошло во время выполнения текущий веб-запрос. Просмотрите трассировку стека информацию об ошибке и где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: WebForms UnobtrusiveValidationMode требует ScriptResourceMapping для 'JQuery'. Добавьте ScriptResourceMapping с именем JQuery (с учетом регистра).

Как я могу его решить?

Ответ 1

Начиная с .NET 4.5, Validators используют атрибуты данных и ограниченный Javascript для выполнения проверки, поэтому .NET ожидает, что вы добавите ссылку script для jQuery.

Существует два возможных способа устранения ошибки:


Отключить UnobtrusiveValidationMode:

Добавьте это в web.config:

<configuration>
    <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    </appSettings>
</configuration>

Он будет работать так, как он работал в предыдущих версиях .NET, и просто добавит необходимый Javascript на вашу страницу, чтобы заставить валидаторы работать, а не искать код в вашем файле jQuery. Это общее решение на самом деле.


Другим решением является регистрация script:

В Global.asax Application_Start добавьте сопоставление в путь к файлу jQuery:

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", 
    new ScriptResourceDefinition
    {
        Path = "~/scripts/jquery-1.7.2.min.js",
        DebugPath = "~/scripts/jquery-1.7.2.min.js",
        CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.min.js",
        CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.js"
    });
}

Некоторые сведения из MSDN:

ValidationSettings: UnobtrusiveValidationMode Указывает, как ASP.NET глобально позволяет встроенным элементам проверки правильности использовать ненавязчивые JavaScript для логики проверки на стороне клиента.

Если для этого значения ключа установлено значение "Нет" [по умолчанию], приложение ASP.NET будет использовать поведение pre-4.5 (встроенный JavaScript на страницах) для логика проверки на стороне клиента.

Если для этого значения ключа установлено значение "WebForms", ASP.NET использует атрибуты данных HTML5 и поздний JavaScript с добавленной ссылкой script для логики проверки на стороне клиента.

Ответ 2

Чтобы устранить эту проблему на конкретной странице, необходимо установить некоторые параметры проверки при загрузке страницы. Введите код ниже в Page_Load():

protected void Page_Load(object sender, EventArgs e)
    {
        ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
    }

Его работа для меня в .NET 4.5

Ответ 3

Jaqen H'ghar находится на месте. Третий способ:

  • Перейдите к разделу "Управление пакетами NuGet"
  • Установите Microsoft.jQuery.Unobtrusive.Validation
  • Откройте файл Global.asax.cs и добавьте этот код в метод Application_Start.

Код, запускаемый при запуске приложения:

ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition {
    Path = "~/Scripts/jquery.validate.unobtrusive.min.js",
    DebugPath = "~/Scripts/jquery.validate.unobtrusive.min.js"
});

Ответ 4

Я думаю, что это лучшее решение для этой ошибки типа. Поэтому, пожалуйста, добавьте строку ниже. Также он работает с моим кодом, когда я использую MSVS 2015.

<configuration>
    <appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
  </appSettings>
</configuration>

Ответ 5

Щелкните правой кнопкой мыши на своем веб-сайте, перейдите на страницы свойств и установите флажки в разделе " Проверка доступности", нажмите "ОК". запустить веб-сайт.

Ответ 6

Исключение указывает на проблему с ненавязчивым режимом проверки JavaScript. Эта проблема не специфична для Sitefinity и встречается в любых стандартных приложениях ASP.NET, когда проект нацелен на платформу.NET 4.5, а проверка версии до 4.5 не включена в файле web.config.

Откройте файл web.config и убедитесь, что в настройках приложения есть ValidationSettings: UnobtrusiveValidationMode:

<appSettings>
  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

Ответ 7

В дополнение к принятому ответу, я столкнулся с проблемами с кодом в другом месте на моем сайте, требующем jQuery вместе с плагином Migrate.

Когда требуемое сопоставление добавляется в Global.asax, при загрузке страницы, требующей ненавязчивой проверки (например, страницы с помощью элемента управления ChangePassword ASP), сопоставленный ресурс скрипта конфликтует с уже загруженными сценариями jQuery и переноса.

Добавление плагина переноса в качестве второго сопоставления решает проблему:

// required for UnobtrusiveValidationMode introduced since ASP.NET 4.5
var jQueryScriptDefinition = new ScriptResourceDefinition
{
    Path = "~/Plugins/Common/jquery-3.3.1.min.js", DebugPath = "~/Plugins/Common/jquery-3.3.1.js", LoadSuccessExpression = "typeof(window.jQuery) !== 'undefined'"
};
var jQueryMigrateScriptDefinition = new ScriptResourceDefinition
{
    Path = "~/Plugins/Common/jquery-migrate-3.0.1.min.js", DebugPath = "~/Plugins/Common/jquery-migrate-3.0.1.js", LoadSuccessExpression = "typeof(window.jQuery) !== 'undefined'"
};
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", jQueryScriptDefinition);
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", jQueryMigrateScriptDefinition);