資料來源
[ASP.NET]WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。
環境
ASP.NET 4.5VS 2012使用空的Web專案
問題
今天在測試WebForm的必填項目驗証時,如下的aspx,
01
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
02
<!DOCTYPE html>
03
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
04
<
head
runat
=
"server"
>
05
<
title
></
title
>
06
</
head
>
07
<
body
>
08
<
form
id
=
"form1"
runat
=
"server"
>
09
<
div
>
10
<
asp:Button
ID
=
"Button1"
runat
=
"server"
Text
=
"Button"
/>
11
<
asp:TextBox
ID
=
"TextBox1"
runat
=
"server"
></
asp:TextBox
>
12
<
asp:RequiredFieldValidator
ID
=
"RequiredFieldValidator1"
13
runat
=
"server"
ControlToValidate
=
"TextBox1"
14
ErrorMessage
=
"RequiredFieldValidator"
></
asp:RequiredFieldValidator
>
15
</
div
>
16
</
form
>
17
</
body
>
18
</
html
>
結果一執行就出現以下的錯誤訊息,WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。
解法1
那是因為Web Form使用UnobtrusiveValidationMode來驗証,所以可以設定不要使用UnobtrusiveValidationMode,如下,在Page_Load中設定,如下,
1
protected
void
Page_Load(
object
sender, EventArgs e)
2
{
3
UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
4
}
經過上面設定好之後,驗証就會依ASP.NET 4.5之前的方式,建立驗証的物件來驗証,如下圖,
解法2
那如果要使用UnobtrusiveValidationMode呢?我們就可以在Global.asax.cs的Application_Start事件中,設定ScriptResourceMapping,如下(因為我專案中的jQuery是2.0.0),
1
protected
void
Application_Start(
object
sender, EventArgs e)
2
{
3
ScriptManager.ScriptResourceMapping.AddDefinition(
"jquery"
,
4
new
ScriptResourceDefinition
5
{
6
Path =
"~/Scripts/jquery-2.0.0.js"
7
});
8
}
原先在Page_Load設定不使用UnobtrusiveValidationMode,請記得刪除哦!如果專案中沒有jQuery的話,可以透過NuGet安裝。經過上面設定好之後,驗証就會走UnobtrusiveValidationMode,所以就會有很多 data-val- 的屬性,如下圖,
留言