it-swarm.com.ru

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

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

Для WebForms UnobtrusiveValidationMode требуется ScriptResourceMapping для "JQuery". Пожалуйста, добавьте ScriptResourceMapping с именем JQuery (чувствителен к регистру).

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

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

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

20
Oz Cohen

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

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


Отключить UnobtrusiveValidationMode:

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

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

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


Другое решение - зарегистрировать скрипт:

В 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 будет использовать поведение до 4.5 (встроенный JavaScript на страницах) для логика проверки на стороне клиента.

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

62
Jaqen H'ghar

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

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

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

6
ross.zhalivtsiv

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

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

2
Shafaet Hossain

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

  1. Перейти к управлению пакетами NuGet
  2. Установите Microsoft.jQuery.Unobtrusive.Validation
  3. Откройте файл 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"
});
2
Christopher Govender

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

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

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

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

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

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

// 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);
0
Eddie Green

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

0
Prajwal Parihar