1. ホーム
  2. c#

[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする

2022-01-24 21:31:46

質問

Webアプリケーションで、以下のエラーが発生します。

WebForms UnobtrusiveValidationMode は ScriptResourceMapping を必要とします。 を 'jquery' に置き換えてください。という名前の ScriptResourceMapping を追加してください。 jquery(大文字・小文字を区別する)です。

説明 の実行中に処理されない例外が発生しました。 現在の Web リクエスト。スタックトレースで詳細を確認してください。 エラーとその原因がコードのどこにあるかについての情報を提供します。

例外の詳細です。System.InvalidOperationException: WebForms UnobtrusiveValidationModeは、ScriptResourceMappingが必要です。 jquery'です。という名前のScriptResourceMappingを追加してください。 jquery(大文字・小文字を区別する)です。

どうすれば解決できますか?

どのように解決するのですか?

.NET 4.5以降、バリデータはデータ属性とバインドされたJavascriptを使用して検証作業を行うため、.NETでは、jQueryのスクリプト参照を追加することが期待されています。

このエラーを解決するには、2つの方法が考えられます。


無効化 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.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から。

バリデーション設定:UnobtrusiveValidationMode ASP.NETの 組み込みのバリデータ・コントロールが、グローバルに控えめな クライアントサイドの検証ロジックのためのJavaScript。

このキー値を "None"[デフォルト]に設定すると、ASP.NETアプリケーションの は、4.5以前の動作(ページ内にJavaScriptをインラインで配置)を使用します。 クライアント側の検証ロジック。

このキー値が "WebForms "に設定されている場合、ASP.NETはクライアント側検証ロジックにHTML5データ属性と追加スクリプト参照からのレイトバインドJavaScriptを使用します。