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);