日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
ASP.NETMVC框架拯救UpdatePanel

什么是“拯救UpdatePanel for ASP.NET MVC框架”呢?ASP.NET AJAX中的UpdatePanel相信大家都有所了解??上У氖牵珹SP.NET MVC框架的誕生“毀滅”了大量基于PostBack的控件,首當(dāng)其沖地可能就是UpdatePanel了。如果沒有 PostBack,UpdatePanel就失去了全部作用,甚至不如一些綁定控件,至少它們還能夠用于展示。為UpdatePanel長(zhǎng)吁短嘆之后,我們不禁又開始懷念UpdatePanel的優(yōu)勢(shì):“透明”。在UpdatePanel的幫助下,實(shí)現(xiàn)AJAX操作對(duì)于開發(fā)人員幾乎完全透明。我們要做的僅僅是將需要AJAX更新的內(nèi)容用UpdatePanel包裝起來,一切都是那么優(yōu)雅。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了印江免費(fèi)建站歡迎大家使用!

我們能否在ASP.NET MVC中拯救UpdatePanel呢?也許是可以的吧,但這更像是一個(gè)“不可能完成的任務(wù)”。我不是傳說中的阿湯哥,因此重新為ASP.NET MVC量身定制一個(gè)AJAX解決方案似乎更為可行。雖然我們不會(huì)苛求一個(gè)新生事物從誕生開始就趨向完美,但即使只是一個(gè)原型,它也必須嚴(yán)格遵守的一些原則:

不得破壞MVC中的協(xié)議(協(xié)作,職責(zé)等等)

對(duì)開發(fā)人員盡可能地透明

Nikhil Kothari曾經(jīng)提出了他在ASP.NET MVC框架下的AJAX解決方案。如果您還不了解他的做法,那么我先在這里進(jìn)行一點(diǎn)概括。Nikhil擴(kuò)展了Controller使之支持一種Ajax操作,于是我們?cè)诖a中就可以寫如下代碼:

 
 
 
  1. publicclassTaskListController:AjaxController{  
  2. ...  
  3. publicvoidCompleteTask(inttaskID){  
  4. if(String.IsNullOrEmpty(Request.Form["deleteTask"])==false){  
  5. InvokeAction("DeleteTask");  
  6. return;  
  7. }  
  8.  
  9. Tasktask=_taskDB.GetTask(taskID);  
  10. if(task!=null){  
  11. _taskDB.CompleteTask(task);  
  12. }  
  13.  
  14. if(IsAjaxRequest){  
  15. if(task!=null){  
  16. RenderPartial("TaskView",task);  
  17. }  
  18. }  
  19. else{  
  20. RedirectToAction("List");  
  21. }  
  22. }  
  23. ...  

與AjaxController類似,Nikhil也為ViewPage和ViewControl提供了一些擴(kuò)展方法,因此目前在View(List.aspx)中我們就能看到如下的代碼:

 
 
 
  1. <divid="taskList">  
  2. <%foreach(TasktaskinTasks){%>  
  3. <div>  
  4. <%this.RenderPartial("TaskView",task);%>  
  5. </div>  
  6. <%}%>  
  7. </div> 

在View和Controller中都存在對(duì)于RenderPartiel方法的調(diào)用,它們的作用就是向客戶端輸出一個(gè)“Partial Template”生成的HTML代碼。而在ASP.NET MVC的默認(rèn)配置中,Partial Template即為User Control。而在TaskView這個(gè)Partial Template中可以看到一些輔助方法:

 
 
 
  1. <divid="taskItem<%=Task.ID%>"class="taskPanel">  
  2. <%Ajax.Initialize();%>  
  3. <%this.RenderBeginAjaxForm(  
  4. Url.Action("CompleteTask"),  
  5. new{  
  6. Update="taskItem"+Task.ID,  
  7. UpdateType="replace",  
  8. Completed="endUpdateTask"});%>  
  9.  
  10. <inputtype="hidden"name="taskID"value="<%=Task.ID%>"/>  
  11. <inputtype="submit"class="completeButton"name="completeTask"value="Done!"/>  
  12. <inputtype="submit"class="deleteButton"name="deleteTask"value="Delete"/>  
  13. <span><%=Html.Encode(Task.Name)%></span>  
  14.  
  15. <%this.RenderEndForm();%>  
  16. <%Ajax.RenderScripts();%>  
  17. </div> 

這些輔助方法的作用是生成一些觸發(fā)AJAX更新的標(biāo)簽及腳本,當(dāng)用戶點(diǎn)擊RenderBeginAjaxForm與RenderEndForm方法生成的tag之間的提交按鈕時(shí),網(wǎng)頁將會(huì)向服務(wù)器端發(fā)出一個(gè)AJAX請(qǐng)求,而服務(wù)器端的Action并最終會(huì)通過RenderPartial方法輸出一個(gè)Partial Template生成的HTML。服務(wù)器端最終輸出的HTML將會(huì)被替換或添加到頁面的某個(gè)元素內(nèi)。這就形成了一個(gè)AJAX效果。這個(gè)解決方案從某些方面看上去很酷,尤其是生成的代碼可以添加到某個(gè)元素中,而不單單是如同UpdatePanel的替換,例如Nikhil在他的例子中就使用了這個(gè)特性實(shí)現(xiàn)了一個(gè)添加功能。不過如果使用之前提出的原則來衡量的話,似乎這個(gè)解決方案并不十分理想。以上介紹ASP.NET MVC框架拯救UpdatePanel


網(wǎng)站標(biāo)題:ASP.NETMVC框架拯救UpdatePanel
URL分享:http://www.5511xx.com/article/cdshggg.html