資料來源
[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<htmlxmlns="http://www.w3.org/1999/xhtml">
04<headrunat="server">
05<title></title>
06</head>
07<body>
08<formid="form1"runat="server">
09<div>
10<asp:ButtonID="Button1"runat="server"Text="Button"/>
11<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>
12<asp:RequiredFieldValidatorID="RequiredFieldValidator1"
13runat="server"ControlToValidate="TextBox1"
14ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
15</div>
16</form>
17</body>
18</html>結果一執行就出現以下的錯誤訊息,WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。
解法1
那是因為Web Form使用UnobtrusiveValidationMode來驗証,所以可以設定不要使用UnobtrusiveValidationMode,如下,在Page_Load中設定,如下,
1protectedvoidPage_Load(objectsender, EventArgs e)
2{
3UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
4}經過上面設定好之後,驗証就會依ASP.NET 4.5之前的方式,建立驗証的物件來驗証,如下圖,
解法2
那如果要使用UnobtrusiveValidationMode呢?我們就可以在Global.asax.cs的Application_Start事件中,設定ScriptResourceMapping,如下(因為我專案中的jQuery是2.0.0),
1protectedvoidApplication_Start(objectsender, EventArgs e)
2{
3ScriptManager.ScriptResourceMapping.AddDefinition("jquery",
4newScriptResourceDefinition
5{
6Path ="~/Scripts/jquery-2.0.0.js"
7});
8}原先在Page_Load設定不使用UnobtrusiveValidationMode,請記得刪除哦!如果專案中沒有jQuery的話,可以透過NuGet安裝。經過上面設定好之後,驗証就會走UnobtrusiveValidationMode,所以就會有很多 data-val- 的屬性,如下圖,
留言