經過實踐,以下三個方案都能解決此問題:
方案一:在程序允許的情況下,降低.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.js和jquery-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" });
【反思】 紙上得來終覺淺,絕知此事要躬行,對於出現的問題要有針對性地思考,對症下藥並去實踐。剛把這三個方案都試了一下,儘管都可以解決了問題,但相對於方案三來說,前兩個方案有一定的侷限性。這是由於asp.net4.0升級至asp.net 4.5後,如果用到了<asp:RequiredFieldValidator/>這樣的驗證控件,就會出現上述問題。