C#中Html.RenderPartial與Html.RenderAction的區(qū)別分析
本文較為詳細(xì)的講解了C#中Html.RenderPartial與Html.RenderAction的區(qū)別,具體分析如下:
Html.RenderPartial與Html.RenderAction這兩個(gè)方法都是用來(lái)在界面上嵌入用戶控件的。
Html.RenderPartial是直接將用戶控件嵌入到界面上:
在頁(yè)面直接渲染 視圖結(jié)果 視圖必須存在!
<%Html.RenderPartial("LogOnUserControl");%>
或
<%Html.RenderPartial("~/Areas/Comm/Views/Shared/LogOnUserControl.ascx");%>
注意:用第一種方法時(shí),用戶控件必須放在調(diào)用者同一目錄下,也可以放在View/Shared中。
Html.RenderAction則通過(guò)Controller中的Action來(lái)調(diào)用用戶控件
在頁(yè)面直接渲染 Action的結(jié)果 可以指定Controller 返回的可以是繼承自ActionResult的所有子類(lèi)型
Controller:----用戶控件所在Controller
public ActionResult UserControl() { return PartialView(); }
View:----調(diào)用用戶控件的View
<%Html.RenderAction("UserControl","Controller");%>
個(gè)人比較喜歡用RenderPartial
RenderPartial和RenderAction都是在Asp.net Mvc中用來(lái)顯示PartialView的方法,所以在什么時(shí)候用哪個(gè)方法就是碰到的第一個(gè)問(wèn)題。而要做出正確的選擇就需要對(duì)這兩個(gè)都有充分的了解,并且 知道其異同點(diǎn)。這也是本文的主題。
兩者的相同點(diǎn):
RenderPartial和RenderAction通常都被用來(lái)顯示一個(gè)功能相對(duì)獨(dú)立的“塊”,比如說(shuō)顯示菜單或者導(dǎo)航條。 兩者輸出的結(jié)果都被作為調(diào)用的View的一部分顯示。
兩者的不同點(diǎn):
RenderPatial的數(shù)據(jù)來(lái)自于調(diào)用的View,而RenderAction來(lái)自自己。
RenderAction會(huì)發(fā)起一個(gè)新的Request,而RenderPatial不會(huì)。
如何選擇:
根據(jù)兩者不同點(diǎn)中的第二點(diǎn),由于RenderAction會(huì)調(diào)用一個(gè)新的Action方法,而Asp.net Mvc中Action是最小的緩存單位,因此如果某一個(gè)“塊”的數(shù)據(jù)比較固定,不會(huì)因?yàn)樵L問(wèn)者的不同而發(fā)生變化,那么這時(shí)就是使用 RenderAction的時(shí)候了。 題外話,對(duì)于RenderAction會(huì)發(fā)起一個(gè)新的Request,感覺(jué)對(duì)調(diào)用頁(yè)面的流程有點(diǎn)破壞。一個(gè)View在顯示的時(shí)候,自己又發(fā)起一個(gè) Request去獲取數(shù)據(jù)來(lái)顯示,顯然有點(diǎn)破壞了作為一個(gè)View的原則.
相關(guān)文章
C#實(shí)現(xiàn)集合轉(zhuǎn)換成json格式數(shù)據(jù)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)集合轉(zhuǎn)換成json格式數(shù)據(jù)的方法,涉及C#針對(duì)dataTable、Enumerable及Json格式數(shù)據(jù)的遍歷及轉(zhuǎn)換操作相關(guān)技巧,需要的朋友可以參考下2016-07-07C#實(shí)現(xiàn)簡(jiǎn)單的loading提示控件實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了C#實(shí)現(xiàn)簡(jiǎn)單的loading提示控件功能,代碼非常簡(jiǎn)單,具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09ASP.Net動(dòng)態(tài)讀取Excel文件最簡(jiǎn)方法
本篇文章給大家分享了ASP.Net動(dòng)態(tài)讀取Excel文件最簡(jiǎn)方法,對(duì)此有需要的讀者們參考學(xué)習(xí)下。2018-05-05C#?DateTime.Now.ToString()?用法示例講解
這篇文章主要介紹了C#?DateTime.Now.ToString()?用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01C#中私有構(gòu)造函數(shù)的特點(diǎn)和用途實(shí)例解析
這篇文章主要介紹了C#中私有構(gòu)造函數(shù)的特點(diǎn)和用途,需要的朋友可以參考下2014-08-08使用C#給PDF文檔添加注釋的實(shí)現(xiàn)代碼
本文將實(shí)例講述C#中如何使用免費(fèi)組件給PDF文檔添加文本注釋?zhuān)ㄗ杂晌谋咀⑨?。自由文本注釋能允許我們自定義它的風(fēng)格和外觀,非常具有實(shí)用價(jià)值2017-01-01