標籤:web開發
一、問題產生的背景:
在敲牛腩新聞發布系統的後台登入頁面的時候,我們用到了RequiredFieldValidator控制項(驗證非空控制項),該控制項的作用是禁止輸入規定的內容,RequiredFieldValidator控制項有一個屬性InitialValue(初值的意思),如果它的值是空,那麼這個空間就會起到禁止輸入規定的內容的作用了——禁止輸入“空”,另外,在驗證前會自動去掉輸入內容兩端的空格。當然,這個空間還有一個屬性ControlToValidate,這個屬性是設定對某個控制項進行驗證,在牛腩新聞發布系統中,我們用它來驗證我們輸入的使用者名稱、密碼、還有驗證碼是否為空白。
例:
下面一代碼錶示RequiredFieldValidator控制項對txtCode(驗證碼文字框)驗證,即不允許驗證碼為空白!
<asp:TextBox ID="txtCode" runat="server" CssClass ="textcode" OnTextChanged="txtCode_TextChanged"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="請輸入驗證碼" text="*" ControlToValidate ="txtCode"></asp:RequiredFieldValidator>
然而,天不遂人願,牛腩老師用的是vs版本和我用的vs版本不一樣,我用的是vs2012,他用的是速成版,代碼一運行就會報錯,具體的錯誤如下!
WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。請添加一個名為 jquery (區分大小寫)的 ScriptResourceMapping。
於是自己在網上找了找此錯誤的解決方案,試了試,錯誤解決成功,但是自己很想知道產生錯誤的原因啊。
二、錯誤原因:
VisualStudio 2012(或2013) WebForm 4.5 開發中,很多控制項預設Enable了 Unobtrusive ValidationMode(所謂Unobtrusive Validation,就是一種隱式的驗證方式)的屬性(和jquery的引用相關),但並未對其進行賦值, Programmer必須手動對其進行設定。比如,在進行資料驗證時使用的各種validator(今天使用的RequiredFieldValidator控制項),以及進行authorization及authenication設定時,由於需要在前端調用jquery來進行身分識別驗證,都預設Enable了 Unobtrusive ValidationMode。如果不對該屬性進行配置,將會產生ERROR。
三、解決方案
在Global.asax中對該屬性進行註冊,在根目錄下添加全域應用程式類Global.asax檔案,在Application_Start事件中添加如下代碼:
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition{Path = "~/scripts/jquery-1.7.2.min.js",DebugPath = "~/scripts/jquery-1.7.2.js",CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.2.min.js",CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.2.js"}); 上面代碼的意識是引用的是1.4.1版的jquery,當然,解決錯誤的方法還有很多,我只是介紹了一種,如果大件還想用其他的方法,可以去網上尋找。我給大家幾個連結。
1、http://www.shaoqun.com/a/56680.aspx
2、http://www.cnblogs.com/fancybit/articles/3616311.html
三、小結
在學習過程中,我們總會遇到問題,到了現在的學習程度,我特別想鍛煉自己刨根問底的能力,就是在學習過程中我們盡量把知識往它的祖墳上刨,包括我們遇到的問題,我們一定要找到問題的根源,當這樣解決問題了之後,自己的心中便有了一種撥開雲霧重見天日的感覺,這個感覺,爽!!!!!
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。