1. 程式人生 > >MVC 部分視圖:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 區別

MVC 部分視圖:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 區別

action mod ren part mysq 原來 一次 讀取 nbsp

在視圖裏有多種方法可以 加載部分視圖,包括:

Partial() Action() RenderPartial() RenderAction() RenderPage() 方法。

以下是這些方法的差別:

Partial 與 RenderPartial 方法

1. Razor 語法:@Html.Partial() 與 @{Html.RenderPartial();}

2. 區別:Partial 可以直接輸出內容,它內部是 將 html 內容轉換為 string 字符(MVCHtmlString),然後緩存起來,最後在一次性輸出到頁面。顯然,這個轉換的過程,會降低效率,所以通常使用 RenderPartial 代替。

RenderPartial 與 RenderAction 方法

1. Razor 語法:@{Html.RenderPartial();} 與 @{Html.RenderAction();}

2. 區別:RenderPartial 不需要創建 Controller 的 Action ,而 RenderAction 需要在 Controller 創建要加載的 Action。

RenderAction 會先去調用 Contorller 的 Action ,最後再 呈現視圖,所以這裏 頁面會在 發起一個鏈接。

如果這個部分視圖只是一些簡單 的 html 代碼,請使用 RenderPartial。 但如果這個部分視圖 除了有 html 代碼外,還需要 通過 讀取數據庫裏的數據 來渲染,就必須使用 RenderAction 了,因為 它可以在 Action 裏調用 Model裏的 方法讀取數據庫,渲染視圖後在呈現,而 RenderPartial 沒有 Action,所以無法做到。

RenderAction 渲染的部分視圖 相當於 完全獨立的頁面 內容和原頁面的完全獨立(如Model ViewBag)

RenderPartial 渲染的部分視圖 可以使用原來視圖的 Model 和 ViewData。


RenderAction 與 Action

1. Razor 語法:@{Html.RenderAction();} 與 @Html.Action();

2. 區別:Action 也是直接輸出,和 Partial 一樣,也存在一個轉換的過程。不如 RenderAction 直接輸出到 當前 HttpContext 的效率高。


RenderPage 與 RenderPartial 方法

1. Razor 語法:@{Html.RenderPartial();} 與 @RenderPage()

MVC 部分視圖:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 區別