WebForms UnobtrusiveValidationMode wymaga ScriptResourceMapping dla jquery

W mojej aplikacji webowej pojawia się następujący błąd:

WebForms UnobtrusiveValidationMode wymaga skryptu dla 'jquery'. Proszę dodać Skryptresourcemapping o nazwie jquery (rozróżnia wielkość liter).

Opis: Wystąpił nieobsługiwany wyjątek podczas wykonywania bieżące żądanie internetowe. Proszę przejrzeć ślad stosu, aby uzyskać więcej informacji informacje o błędzie i miejscu jego powstania w kodzie.

Szczegóły Wyjątku: System.InvalidOperationException: WebForms UnobtrusiveValidationMode wymaga scriptresourcemapping dla 'jquery'. Proszę dodać Skryptresourcemapping o nazwie jquery (rozróżnia wielkość liter).

Jak mogę to rozwiązać?

Author: Jaqen H'ghar, 2016-05-14

7 answers

Od. NET 4.5 walidatory używają atrybutów danych i ograniczonego Javascript do walidacji, więc. NET oczekuje, że dodasz odniesienie do skryptu jQuery.

Istnieją dwa możliwe sposoby rozwiązania błędu:


Wyłącz UnobtrusiveValidationMode:

Dodaj to do web.config:

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

Będzie działać tak, jak w poprzednich wersjach. NET i po prostu doda niezbędny Javascript do strony, aby walidatory działały, zamiast szukać kodu w jQuery plik. W rzeczywistości jest to powszechne rozwiązanie.


Innym rozwiązaniem jest zarejestrowanie skryptu:

In Global.asax Application_Start Dodaj mapowanie do ścieżki pliku 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.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"
    });
}

Niektóre szczegóły z MSDN:

ValidationSettings: UnobtrusiveValidationMode określa sposób ASP.NET globalnie pozwala wbudowanym kontrolkom walidatora używać dyskretnie JavaScript dla logiki walidacji po stronie klienta.

Jeśli wartość klucza jest ustawiona na " None "[default], ASP.NET zastosowanie użyje zachowania pre - 4.5 (JavaScript inline in the pages) dla logika walidacji po stronie klienta.

Jeśli wartość klucza jest ustawiona na "WebForms", ASP.NET używa atrybutów danych HTML5 i późnego kodu JavaScript z dodanego odwołania do skryptu dla logiki walidacji po stronie klienta.

 112
Author: Jaqen H'ghar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Aby rozwiązać ten problem na określonej stronie, należy ustawić pewne ustawienia walidacji podczas ładowania strony. Wpisz poniżej kod w metodzie Page_Load():

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

Jego praca dla mnie w. NET 4.5

 6
Author: Rostyslav Zhalivtsiv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-05 11:41:06

Myślę, że jest to najlepsze rozwiązanie dla tego typu błędów. Więc proszę dodać poniżej. Działa również mój kod, gdy używam MSVS 2015.

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

 5
Author: shafaetjsr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-01 09:29:25

Jaqen H ' Ghar jest na miejscu. Trzecim sposobem jest:

  1. przejdź do Zarządzaj pakietami NuGet
  2. Zainstaluj Microsoft.jQuery.Dyskretny.Walidacja
  3. Open Global.asax.plik cs i dodaj ten kod wewnątrz metody Application_Start

Kod uruchamiany podczas uruchamiania aplikacji:

ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition {
    Path = "~/Scripts/jquery.validate.unobtrusive.min.js",
    DebugPath = "~/Scripts/jquery.validate.unobtrusive.min.js"
});
 3
Author: Christopher Govender,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-05 21:19:34

Kliknij prawym przyciskiem myszy na swojej stronie przejdź do property pages i zaznacz oba pola wyboru pod Accessibility validation Kliknij ok. Uruchom stronę.

 0
Author: Prajwal Parihar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-02 05:05:42

Wyjątek wskazuje na problem z dyskretnym trybem walidacji JavaScript. Ten problem nie jest specyficzny dla Sitefinity i występuje w każdym standardzie ASP.NET aplikacje, gdy projekt ma na celu. NET 4.5 framework i pre-4.5 Walidacja nie jest włączona w Internecie.plik konfiguracyjny.

Otwórz sieć.plik konfiguracyjny i upewnij się, że w ustawieniach aplikacji znajduje się ValidationSettings:UnobtrusiveValidationMode:

<appSettings>
  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
 0
Author: Noor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-09 08:00:16

W związku z zaakceptowaną odpowiedzią napotkałem problemy z kodem w innym miejscu na mojej stronie wymagającym jQuery wraz z wtyczką Migrate .

Gdy wymagane mapowanie jest dodawane do globalnego.asax, podczas ładowania strony wymagającej dyskretnej walidacji(na przykład strony z kontrolką ASP ChangePassword), zmapowany zasób skryptów koliduje z już załadowanymi skryptami jQuery i migrate.

Dodanie wtyczki migrate jako drugiego mapowania rozwiązuje problem:

// 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
Author: Eddie Green,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-01 13:48:08