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に以下のコードを記述します。
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"/>

Web.config
<?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を愛用
掲載日: 2012-09-18
iPentec all rights reserverd.