2010-06-09 63 views
1

我目前正在開發一個利用ASP.NET MVC2的新網站。我想對網站做的很多事情(從前端角度來看)涉及到AJAX-y類型的任務。ASP.NET MVC2和AJAX

兩個例子:

  1. 我想顯示的形式,並通過一個下拉菜單(或通過鏈接),而不必回去打每一次的服務器之間進行切換。
  2. 我希望用戶能夠選擇圖表控件上的點,並根據他/她選擇的部分(局部頁面刷新)使用適當的數據刷新頁面的某些部分。

在這兩種情況下,我都能夠使用傳統的Web窗體事件處理程序等完成我希望完成的任務。不幸的是,使用ScriptManager違反了MVC的精神。看起來,MVC似乎阻止了許多ASP.NET可用的控件的使用。

所以,我的問題是:如何在不利用ScriptManager和使用事件處理程序的Web窗體方法的情況下使用AJAX並進行AJAX調用?

+0

當您使用ScriptManager和WebForms事件處理程序完成這些部分渲染任務時,您*會返回並每次觸碰服務器。這些部分更新實際上比整個頁面刷新多*服務器密集型,無論實際重新渲染區域有多小。 – 2010-06-09 18:22:06

回答

2

這不是ScriptManager「違反了MVC的精神」,它只是MVC框架的構建方式不同而已。

Web控件依賴ASP.Net webforms構造,如ViewState和Postbacks。這些在ASP.Net MVC中不存在,所以依賴它們的任何控件都將無法正常工作。但是,控件仍然會呈現其HTML並運行其事件處理程序,因爲每個.aspx頁面在由默認視圖引擎編譯時仍會遍歷頁面生命週期。 (如果你使用自定義的視圖引擎來渲染你的html,它們根本無法工作!)

無論如何,大多數人依靠微軟的ajax腳本(MicrosoftAjax.js,MicrosoftMvcAjax.js)或者使用第三方第三方庫,如jQuery做他們的ajax的東西。如果你剛開始,我會建議前往main ASP.Net MVC site並查看他們的一些教程。 NerdDinner電子書是MVC的好開始,there is a chapter on using Microsoft's Ajax to do dynamic updates