ASP.NET ページ表示時に "WebForms UnobtrusiveValidationMode には、 'jquery' の ScriptResourceMapping が必要です。 jquery (大文字と小文字が区別されます) という名前の ScriptResourceMapping を追加してください。" エラーが表示されWebアプリケーションが実行できない - ASP.NET
現象
"WebForms UnobtrusiveValidationMode には、 'jquery' の ScriptResourceMapping が必要です。 jquery (大文字と小文字が区別されます) という名前の ScriptResourceMapping を追加してください。" というエラーが表示されWebアプリケーションが実行できない状態になります。
原因1
Web.Config ファイルが.NET Frameworkの古いバージョンのもの(例:.NET Framework 3.5など)になっている可能性があります。 Web.Configファイルも新しいバージョンのもので更新するとエラーが解消される場合があります。
原因2
UnobtrusiveValidationModeがUnobtrusiveValidationMode.WebFormになっている場合、jqueryが無いため、上記のエラーが表示されます。以下のいずれかの対策をします。
対策1 : jquery を準備する
jqueryを準備します。
jqueryのサイト(
http://jquery.com/)にアクセスします。
Downloadからjqueryをダウンロードします。今回は最新版のバージョン1.9.1をダウンロードします。
公開されている"jquery-1.9.1.min.js"(リリース版)、"jquery-1.9.1.js"(デバッグ版)をダウンロードします。
ソリューションエクスプローラでプロジェクトに"scripts"フォルダを作成します。ダウンロードしたjqueryのソース2つをフォルダ内に追加します。(下図参照)
プロジェクトに"グローバルアプリケーションクラス"のファイルを追加します。ファイル名は"Global.asax"とします。
Global.asaxに以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
namespace iPentecTestWebapp
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
ScriptManager.ScriptResourceMapping.AddDefinition("jquery",
new ScriptResourceDefinition
{
Path = "~/scripts/jquery-1.9.1.min.js",
DebugPath = "~/scripts/jquery-1.9.1.js",
CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.9.1.min.js",
CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.9.1.js"
//CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.min.js",
//CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.js"
});
}
}
}
プロジェクトを実行するとエラーが表示されず、正常に実行できます。
対策2 : ValidationSettings:UnobtrusiveValidationModeを設定する
Web.configファイルで"ValidationSettings:UnobtrusiveValidationMode"をNoneに設定すると解消する場合があります。
appSettings内に以下を記述します。
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
例
<?xml version="1.0" encoding="utf-8"?>
<!--
ASP.NET アプリケーションの構成方法の詳細については、
http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
</appSettings>
</configuration>
対策3 : ValidationSettings.UnobtrusiveValidationModeを設定する
Global.asaxのApplication_StartイベントなどでUnobtrusiveValidationModeを設定します。
例
using System.Web.UI;
...
protected void Application_Start(object sender, EventArgs e)
{
ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.WebForms;
}
対策4 : UnobtrusiveValidationModeプロパティを設定する
WebFormのPage_LoadイベントやコンストラクタでUnobtrusiveValidationModeプロパティを設定します。
例
protected void Page_Load(object sender, EventArgs e)
{
this.UnobtrusiveValidationMode = System.Web.UI.UnobtrusiveValidationMode.None;
}
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用