2010-12-21 65 views

回答

115
Html.Partial("MyView") 

將「MyView」視圖呈現爲MvcHtmlString。它遵循視圖查找的標準規則(即檢查當前目錄,然後檢查Shared目錄)。

Html.RenderPartial("MyView") 

Html.Partial()一樣,只是它將輸出直接寫入響應流。這是更高效的,因爲視圖內容不被緩衝在內存中。但是,因爲該方法不會返回任何輸出,所以@Html.RenderPartial("MyView")將不起作用。您必須將呼叫包裝在代碼塊中:@{Html.RenderPartial("MyView");}

RenderPage("MyView.cshtml") 

呈現直接指定的視圖(由路徑和文件名,而不是通過視圖名稱標識),以響應流,像Html.RenderPartial()。您可以通過它作爲第二個參數

RenderPage("MyView.cshtml", MyModel) 
+8

@ {Html.RenderPartial(「MyView」);} over @ Html.RenderPartial(「MyView」)的效率增益是否存在任何度量標準? – Faust 2011-10-18 07:03:44

15

我喜歡

@RenderPage("_LayoutHeader.cshtml") 

@{ Html.RenderPartial("_LayoutHeader"); } 

只是因爲語法更容易,更具有可讀性。除此之外,似乎沒有任何區別功能明智。

編輯:RenderPartial的一個優點是你不必指定整個路徑或文件擴展名,它將自動搜索常見的地方。

+1

我認爲這應該是一個評論,而不是回答。由於語法,我也同意`RenderPage`。 – 2015-01-19 20:15:38

6

的RenderPartial方法不會返回HTML標記像大多數其他輔助方法提供你喜歡的任何視圖模式。相反,它將 內容直接寫入響應流,這就是爲什麼我們必須使用分號將它稱爲完整的C#行。

這比從部分視圖中緩存呈現的HTML稍微更高效,因爲無論如何它將被寫入 響應流。如果你喜歡一個更一致的語法,您可以使用Html.Partial方法,其中 不會完全一樣的的RenderPartial方法,但返回一個HTML片段,可以作爲 @ Html.Partial(「產品「,p)。

2

我們還可以使用部分視圖傳遞模型。 @ Html.Partial( 「MyView的」, 「爲MyModel」);

0
@RenderPages() 

以上在ASP.NET MVC中不起作用。它只適用於WebPages。

@Html.Partial("_Footer") 

您將需要在ASP.NET MVC中使用上述內容。