ASP.NET MVC 2與MVC 3使用AjaxHelper引用Javascript檔不同

就一直很奇怪,自從我安裝ASP.NET MVC 3之後,發現程式裡的AjaxHelper的相關程式都不會有動作,但網頁上又不會有任何錯誤(Firebug也沒有)。

一直找不到原因,後來終於透過Forum詢問,找到原因。基本上不是ASP.NET MVC 3的問題。一來是自己不用功,沒時間去看ASP.NET MVC 3 Release Notes,二來是自己想法太單純,想說ASP.NET MVC 3應該會相容ASP.NET MVC 2吧,所以只是單純安裝MVC 3然後使用。

問題重現

在ASP.NET MVC 3專案中,做如「AjaxHelper Class」最下面的Lab,你會發現Ajax不會運作。但一樣的程式碼在ASP.NET MVC 2很正常。

ASP.NET MVC 2需引用MicrosoftAjax.js及MicsoftMvcAjax.js兩支Javascript。但ASP.NET MVC 3預設使用「Unobtrusive JavaScript」,我們可以參考根目錄下web.config

<appSettings>
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
  </appSettings>

所以在ASP.NET MVC 3我們必須引用另一支Javascript「jquery.unobtrusive-ajax.js」,這一支Javascript必須配合jQuery使用,所以也是引用兩支Javascript。

<script src="<%: Url.Content("~/Scripts/jquery-1.4.4.min.js") %>" type="text/javascript">
</script>
<script src="<%: Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js") %>" type="text/javascript">
</script>

引用之後,ASP.NET MVC 3的AjaxHelper就能正常運作了。看來我是要花點時間把ASP.NET MVC 3 Release Notes好好的K一K。@_@

Reference:

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。