VS2012驗證控件出現WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping的問題

     相信很多博友都遇到過這樣問題:當我們用vs創建一個空的asp.net項目時,用到驗證控件時都會遇到出現異常錯誤,但是代碼檢查再三都是沒有任何問題的。在做項目的時候,用戶進入系統需要驗證是否輸入驗證碼,這時需要添加一個驗證控件,但在運行的時候出現瞭如下異常錯誤:

                        

經過實踐,以下三個方案都能解決此問題:

方案一:在程序允許的情況下,降低.Framework的版本,在Web.config中直接修改,具體方法如下:

修改前:

 <system.web>
       <compilation debug="true" targetFramework="4.5" />
       <httpRuntime targetFramework="4.5" />
    </system.web>
      修改後:

  <system.web>
        <compilation debug="true" targetFramework="4.0" />
     </system.web>

方案二:在使用驗證控件的當前頁面後臺page_load中加這樣一句代碼:UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;

先從字面上理解下這句代碼的含義:Unobtrusive意思是不突出的,不引人注目的;謙虛的; 不唐突的;不冒昧的;那也就是講使用驗證模式設爲none。微軟對UnobtrusiveValidationMode的定義是:應用程序的客戶端驗證架構。那麼我們的設置即屏蔽了微軟的ValidationSettings類庫,底層需要jquery的支持。

正好驗證了瀏覽器所報的錯誤,這樣一來雖然問題解決了,但是由於我們屏蔽了ValidationSettings,當我們想讓錯誤以彈框或其他華麗的形式告知用戶時又會報丟失文件的異常錯誤。所以此方案具有一定的侷限性。

  方案三:然瀏覽器解析報缺少ScriptResourceMapping的錯誤,那麼我們就在項目中添加即可。

1.在根目錄下新建scripts文件夾,向裏邊添加jquery-1.7.2.min.jsjquery-1.7.2.js(可根據自己需要使用不同的版本)

2.在根目錄下添加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" });

參考資料:https://connect.microsoft.com/VisualStudio/feedback/details/735928/in-asp-net-web-application-visual-basic-the-requiredfieldvalidator

     【反思】 紙上得來終覺淺,絕知此事要躬行,對於出現的問題要有針對性地思考,對症下藥並去實踐。剛把這三個方案都試了一下,儘管都可以解決了問題,但相對於方案三來說,前兩個方案有一定的侷限性。這是由於asp.net4.0升級至asp.net 4.5後,如果用到了<asp:RequiredFieldValidator/>這樣的驗證控件,就會出現上述問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章