自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

介紹ASP.NET MVC中的MvcAjaxPanel

開發(fā) 后端
本文介紹ASP.NET MVC中的MvcAjaxPanel,MvcAjaxPanel的工作原理與UpdatePanel有頗多相似之處,也做到了一定程度上的透明。

也有評(píng)論認(rèn)為,Controller中的邏輯不該根據(jù)一個(gè)請(qǐng)求AJAX與否而進(jìn)行不同處理(Nikhil的解決方案使用RenderPartial 來(lái)替代RenderView為AJAX操作進(jìn)行輸出),因此這個(gè)解決方案破壞了MVC的職責(zé)。我不這么認(rèn)為,但是我希望能做到這一點(diǎn),因?yàn)樽龅竭@一點(diǎn)即意味著絕對(duì)的透明。絕對(duì)透明則意味著Controller將一個(gè)應(yīng)用程序是否AJAX的決定權(quán)完全交給了客戶端,這點(diǎn)非常理想,因?yàn)锳JAX完全是一個(gè)表現(xiàn)層的概念。ASP.NET AJAX中的UpdatePanel在這方面的表現(xiàn)可圈可點(diǎn)(雖然還遠(yuǎn)不夠完美),因此我最后決定也為ASP.NET MVC開發(fā)一款類似UpdatePanel的組件。值得慶幸的是,ASP.NET MVC默認(rèn)使用WebForm頁(yè)面作為視圖模板,在這個(gè)強(qiáng)大的模型之下,構(gòu)建出這樣一個(gè)AJAX解決方案(的原形)似乎并不十分困難。

我將這個(gè)控件命名為MvcAjaxPanel。MvcAjaxPanel與UpdatePanel最大的區(qū)別在于后者接收的是PostBack,而前者接收的只是普通的HTTP請(qǐng)求。Post“Back”意味著Post過(guò)后回到了原來(lái)的Page,而ASP.NET MVC的請(qǐng)求往往會(huì)被引導(dǎo)至不同的頁(yè)面。因此如何跨頁(yè)面進(jìn)行內(nèi)容更新是MvcAjaxPanel首要解決的問題。最終我選擇了為每個(gè)MvcAjaxPanel指定一個(gè)UpdateAreaID的做法。

  1. <mvc:MvcAjaxPanel runat="server" ID="mvcAjaxPanel" UpdateAreaID="Header">  
  2.     ...  
  3. </mvc:MvcAjaxPanel> 


當(dāng)頁(yè)面向服務(wù)器端發(fā)出一個(gè)AJAX請(qǐng)求時(shí)將會(huì)附帶頁(yè)面中的UpdateAreaID信息,而服務(wù)器端的Action并不會(huì)意識(shí)到這一點(diǎn),因此依舊按照尋常邏輯指定一個(gè)視圖模版并輸出HTML。不過(guò),如果視圖模板中的 MvcAjaxPanel發(fā)現(xiàn)這個(gè)請(qǐng)求實(shí)際上是一個(gè)符合約定的AJAX請(qǐng)求(請(qǐng)注意,只有View組件意識(shí)到這是個(gè)請(qǐng)求的性質(zhì)),則會(huì)使用新的方法來(lái)替換標(biāo)準(zhǔn)的輸出。這時(shí)候模板就會(huì)根據(jù)客戶端傳遞過(guò)來(lái)的UpdateAreaID,尋找頁(yè)面上具有同樣屬性值的MvcAjaxPanel,有選擇性地輸出內(nèi)容。在客戶端就會(huì)有對(duì)應(yīng)的JavaScript代碼接收服務(wù)器端的數(shù)據(jù),并且更新頁(yè)面中的相應(yīng)區(qū)域。

很明顯,MvcAjaxPanel的工作原理與UpdatePanel有頗多相似之處,也做到了一定程度上的透明。而且與Nikhil的解決方案相比,一個(gè)非常重要的優(yōu)勢(shì)就是可以一次更新頁(yè)面中的多個(gè)區(qū)域——其實(shí)這也就是UpdatePanel的特性之一。而且這種對(duì)Controller透明的做法又有一個(gè)天然的特點(diǎn),那就是能夠輕松地在不支持AJAX的瀏覽器中使用傳統(tǒng)的方式切換頁(yè)面。

【編輯推薦】

  1. ASP.NET的AsyncState參數(shù)
  2. ASP.NET MVC執(zhí)行異步Action
  3. 概述ASP.NET MVC框架
  4. ASP.NET MVC中使用UpdataModel方法
  5. ASP.NET MVC的Action方法
責(zé)任編輯:佚名 來(lái)源: IT專家網(wǎng)
相關(guān)推薦

2009-07-20 10:53:59

ASP.NET MVC

2009-07-20 15:44:32

ASP.NET MVC

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2009-07-23 18:14:17

MVC生命周期

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-10-29 09:15:32

ASP.NET MVCDropDownLis

2009-04-08 09:58:07

ASP.NET MVCTempData框架

2009-07-28 10:23:19

button按鈕ASP.NET

2009-07-20 16:56:16

SQL語(yǔ)句ASP.NET

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-29 10:02:49

ASP.NET上傳

2009-07-27 17:00:29

ASP.NET主機(jī)

2009-07-29 09:14:36

ASP.NET網(wǎng)站

2009-07-21 10:40:36

ASP.NET Pro
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)