環境
ASP.NET 4.5
VS 2012
使用空的Web專案
問題
今天在測試WebForm的必填項目驗証時,如下的aspx,
01 | <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> |
08 | < form id = "form1" runat = "server" > |
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 > |
結果一執行就出現以下的錯誤訊息,
WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。
解法1
那是因為Web Form使用UnobtrusiveValidationMode來驗証,所以可以設定不要使用UnobtrusiveValidationMode,如下,在Page_Load中設定,如下,
1 | protected void Page_Load( object sender, EventArgs e) |
3 | UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; |
經過上面設定好之後,驗証就會依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) |
3 | ScriptManager.ScriptResourceMapping.AddDefinition( "jquery" , |
4 | new ScriptResourceDefinition |
6 | Path = "~/Scripts/jquery-2.0.0.js" |
原先在Page_Load設定不使用UnobtrusiveValidationMode,請記得刪除哦!
如果專案中沒有jQuery的話,可以透過NuGet安裝。
經過上面設定好之後,驗証就會走UnobtrusiveValidationMode,所以就會有很多 data-val- 的屬性,如下圖,
沒有留言:
張貼留言