Html.RenderPartial與Html.RenderAction這兩個方法都是用來在界面上嵌入用戶控件的。
Html.RenderPartial是直接將用戶控件嵌入到界面上:
<%Html.RenderPartial("LogOnUserControl");%>
或
<%Html.RenderPartial("~/Areas/Comm/Views/Shared/LogOnUserControl.ascx");%>
注意:用第一種方法時,用戶控件必須放在調用者同一目錄下,也可以放在View/Shared中。
Html.RenderAction則通過Controller中的Action來調用用戶控件
Controller:----用戶控件所在Controller
public ActionResult UserControl()
{
return PartialView();
}
View:----調用用戶控件的View
<%Html.RenderAction("UserControl","Controller");%>
個人比較喜歡用RenderPartial
What is Html.RenderPartial
Html.RenderPartial在Asp.net Mvc中是用來調用PartialView的。PartialView基本上就是Asp.net Webform中的UserControl。調用也很簡單,只要在View中把PartialView的名字作爲參數傳遞就可以。比如:
<% Html.RenderPartial("YourPartialView", YourData); %> |
What is Html.RenderAction
Html.RenderAction允許你直接調用某一個Action,並把返回的結果直接顯示在當前調用的View中。比如:
<% Html.RenderAction("Show", "Tag"); %> |
[OutputCache(Duration=6000)] public ActionResult Show() { var tagData = null ; //Get data from database //tagData = tagService.AllHot(); return PartialView( "TagCloud" ,
tagData); } |
兩者的相同點
RenderPartial和RenderAction通常都被用來顯示一個功能相對獨立的“塊”,比如說顯示菜單或者導航條。 兩者輸出的結果都被作爲調用的View的一部分顯示。兩者的不同點
- RenderPatial的數據來自於調用的View,而RenderAction來自自己。
- RenderAction會發起一個新的Request,而RenderPatial不會。