2012-08-01 42 views
2

我對UpdatePanel的知識是的UpdatePanel behide現場

  1. 他們使用Ajax請求異步工作。
  2. 他們執行部分回發。

現在最近我對Ajax請求工作過使用jQuery的$.ajax()方法時,我發現有關我的,哪些是

  1. 的UpdatePanel的Ajax請求通過的UpdatePanel做Ajax請求做出Ajax請求一些差異進行全頁面生命週期,但我的Ajax請求只調用我提供的被調用的特定方法。
  2. 由UpdatePanel調用的方法不需要標記爲WebMethod,但由我的Ajax請求調用的方法必須是WebMethod。

我搜索網頁,以獲取有關這些差異的詳細信息,但並沒有發現任何資源,有人能告訴我什麼是阿賈克斯之間的差別調用由我和取得的UpdatePanel或者更具體怎麼樣了這些差異做了什麼特別的由UpdatePanel發揮技巧來實現該功能?

+1

這是一篇相當不錯的文章,您應該閱讀http://encosia.com/why-aspnet-ajax-updatepanels-are-dangerous/ – 2012-08-01 13:24:45

回答

3

我很喜歡這個問題,隊友+1

基本上邪惡的UpdatePanel是一切罪惡的根源。可悲的是它=(幕後更新面板提高了異步回發到服務器,但要充分理解發生了什麼,你需要了解UpdatePanel的目標

UpdatePanel的設計與ASP.Net工作web表單,這些控件必須經過whoooole ASP.Net頁面生命週期才能正常工作,因此,他們需要whoooole頁面ViewState。因此,每次使用UpdatePanel執行回發時,整個即使你只想部分渲染頁面的一小部分,頁面視圖狀態也會被髮送到服務器......糟透了爲什麼微軟創造了這個怪物?我認爲這是因爲在5-6年前(或更多)AJAX並非如此像今天一樣流行。另一個原因是,微軟希望提供一個框架來以簡單的方式編寫AJAX調用,但不會失去Web控件的強大功能。

所以考慮到這一點,一個UpdatePanel和AJAX調用之間的區別,無非是:

AJAX調用只發送服務器方法所需要的數據,並只返回所需的數據。使用純AJAX調用的性能令人印象深刻。

但我的Ajax請求調用的方法必須是WebMethod。

這是部分正確的,我的意思是有不同的方式來揭露從服務器的方法:

  • 使用傳統的Web服務 - 腳本服務(ASMX)

  • 使用PageMethods(靜態方法在你的ASPX頁面上)

  • 揭露WCF服務

  • 暴露WCF REST服務

  • 使用WEB API

  • 使用MVC控制器的行動

  • 使用返回一個特定的內容類型,像JSON

  • 等自定義HttpHandlers的

最後的結果是一樣的,沒有在使用純AJAX調用時,使用什麼方法公開服務器方法,如果您使用的是Web表單,則必須面對以下問題:

如果要使用純AJAX調用,則應考慮移動到MVC因爲在網頁表單,你將失去的Web控件的力量,換句話說,你的發展將更加困難

+0

+1,但不要這樣「換句話說,您的開發會更困難「,從那以後,mvc有了更多的改進。更多的html助手和使用jquery的幫助 – 2013-01-30 07:16:11

0

他們進行局部回傳。

不,更新面板執行完整回發,他們只是在頁面上執行部分更新。

UpdatePanel的Ajax請求執行整頁生命週期,但是我的Ajax請求只調用我提供用於調用的特定方法。

確切地說,更新面板會執行完整的回發。非常低效。

+0

UpdatePanel也發揮了什麼特別的技巧來實現這一功能? – yogi 2012-08-01 13:50:17

+0

一個很好的學習方法是啓動任何使用Chrome(或IE)中的updatepanel的asp.net頁面,並用開發工具檢查請求,但簡單地說:UpdatePanel(s)/ ScriptManager只需執行XMLHTTPRequests (AKA Ajax請求)通過在頁面中注入一堆額外的JavaScript函數。這些請求包含ViewState信息和其他所有內容。服務器接收請求並正常處理頁面(整頁生命週期),將更新的ViewState返回到頁面和更新的HTML部分。它通過在請求('X-MicrosoftAjax:Delta = true')上添加一個「特殊」標題 – Icarus 2012-08-01 14:51:51

+0

...來實現此目的,這反過來會觸發對服務器端頁面呈現的特殊處理,從而使響應只返回必要的更新HTML。但在這裏,我找到了一個**優秀的**詳細解釋給你:http://msdn.microsoft.com/en-us/magazine/cc163354.aspx – Icarus 2012-08-01 14:53:40