Html.RenderPartial與Html.RenderAction

Html.RenderPartial與Html.RenderAction的區別

    Html.RenderPartial與Html.RenderAction這兩個方法都是用來在界面上嵌入用戶控件的。數據庫

     Html.RenderPartial是直接將用戶控件嵌入到界面上:緩存

    <%Html.RenderPartial("LogOnUserControl");%>app

spa

    <%Html.RenderPartial("~/Areas/Comm/Views/Shared/LogOnUserControl.ascx");%>.net

注意:用第一種方法時,用戶控件必須放在調用者同一目錄下,也能夠放在View/Shared中。code

    Html.RenderAction則經過Controller中的Action來調用用戶控件orm

Controller:----用戶控件所在Controllerci

    public ActionResult UserControl()
    {
        return PartialView();
    }
it

View:----調用用戶控件的Viewio

    <%Html.RenderAction("UserControl","Controller");%>

我的比較喜歡用RenderPartial

RenderPartial和RenderAction都是在Asp.net Mvc中用來顯示PartialView的方法,因此在何時用哪一個方法就是碰到的第一個問題。而要作出正確的選擇就須要對這兩個都有充分的瞭解,而且 知道其異同點。這也是本文的主題。

What is Html.RenderPartial

Html.RenderPartial 在Asp.net Mvc中是用來調用PartialView的。PartialView基本上就是Asp.net Webform中的UserControl。調用也很簡單,只要在View中把PartialView的名字做爲參數傳遞就能夠。好比:

<% Html.RenderPartial("YourPartialView", YourData); %>

YourData 是一個可選的參數。若是有,那麼YourData會被賦給PartialView中的Model。若是沒有,那麼調用 RenderPartial的View中的Mode和ViewData會被傳遞給PartialView。也就是說,PartialView的數據來自於 調用的View。

What is Html.RenderAction

Html.RenderAction容許你直接調用某一個Action,並把返回的結果直接顯示在當前調用的View中。好比:

<% Html.RenderAction("Show", "Tag"); %>

此時,TagController中的Show方法會被調用。因爲這時調用的是一個Action方法,所以能夠在此方法中完成你想要完成的各類操做,好比從數據庫,文件等獲取數據,寫數據等並返回結果。

[OutputCache(Duration=6000)]
public ActionResult Show()
{
    var tagData = null;
    //Get data from database
    //tagData = tagService.AllHot();
    return PartialView("TagCloud", tagData);
}

TagCloud是一個簡單的PartialView文件而已。

二者的相同點

RenderPartial和RenderAction一般都被用來顯示一個功能相對獨立的「塊」,好比說顯示菜單或者導航條。 二者輸出的結果都被做爲調用的View的一部分顯示。

二者的不一樣點

  1. RenderPatial的數據來自於調用的View,而RenderAction來自本身。
  2. RenderAction會發起一個新的Request,而RenderPatial不會。

如何選擇

根 據二者不一樣點中的第二點,因爲RenderAction會調用一個新的Action方法,而Asp.net Mvc中Action是最小的緩存單位,所以若是某一個「塊」的數據比較固定,不會由於訪問者的不一樣而發生變化,那麼這時就是使用 RenderAction的時候了。 題外話,對於RenderAction會發起一個新的Request,感受對調用頁面的流程有點破壞。一個View在顯示的時候,本身又發起一個 Request去獲取數據來顯示,顯然有點破壞了做爲一個View的原則.

相關文章
相關標籤/搜索