"WebForms UnobtrusiveValidationMode には、 'jquery' の ScriptResourceMapping が必要です。 jquery (大文字と小文字が区別されます) という名前の ScriptResourceMapping を追加してください。" というエラーが表示されWebアプリケーションが実行できない状態になります。
Web.Config ファイルが.NET Frameworkの古いバージョンのもの(例:.NET Framework 3.5など)になっている可能性があります。 Web.Configファイルも新しいバージョンのもので更新するとエラーが解消される場合があります。
UnobtrusiveValidationModeがUnobtrusiveValidationMode.WebFormになっている場合、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"
});
}
}
}
プロジェクトを実行するとエラーが表示されず、正常に実行できます。
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>
Global.asaxのApplication_StartイベントなどでUnobtrusiveValidationModeを設定します。
using System.Web.UI;
...
protected void Application_Start(object sender, EventArgs e)
{
ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.WebForms;
}
WebFormのPage_LoadイベントやコンストラクタでUnobtrusiveValidationModeプロパティを設定します。
protected void Page_Load(object sender, EventArgs e)
{
this.UnobtrusiveValidationMode = System.Web.UI.UnobtrusiveValidationMode.None;
}