@RenderPage()
但它不能使用 原來視圖的 Model 和 ViewData ,只能通過參數來傳遞。
1 @RenderPage("~/Shared/Component/Dialog.cshtml", new { title = "Hello world!", content="Nani" })
分部視圖接收數據通過Page
1 <div id="dialog" title="@Page.title" style="display: none;">
2 <p>
3 @Page.title
4 </p>
5 </div>
@Html.Partial()
用於將分部視圖渲染為字符串
@Html.Partial("_PartialPage1",model,ViewData)直接返回MvcHtmlString填充
1 @Html.Partial("Component/Dialog", null, new ViewDataDictionary { { "title", "Hello world!" }, { "content", "Nani?" } })
Razor子視圖裏使用 ViewBag 來獲取傳遞的數據
1 <div id="dialog" title="@ViewBag.title" style="display: none;">
2 <p>
3 @ViewBag.content
4 </p>
5 </div>
傳遞強類型到部分視圖
1 @{
2 var args = new Dictionary<string,string>();
3 args["redirectController"] = "Admin";
4 args["redirectAction"] = "User";
5 }
6 @Html.Partial("_childPartial",args)
_childPartial.cshtml
1 @model Dictionary<string,string>
2 <div>@Model["redirectController"]</div>
3 <div>@Model["redirectAction"]</div>
@RenderPartial()
將分布視圖直接寫入響應輸出流,所以只能直接放在代碼塊中,不能放在表達式中(返回值是void)
RenderPartial 不需要創建 Controller 的 Action ,而 RenderAction 需要在 Controller創建要加載的 Action。 RenderAction 會先去調用 Contorller 的 Action ,最後再 呈現視圖,所以這裏 頁面會在 發起壹個鏈接。 如果這個部分視圖只是壹些簡單 的 html 代碼,請使用 RenderPartial。 但如果這個部分視圖 除了有 html 代碼外,還需要 通過 讀取數據庫裏的數據 來渲染,就必須使用 RenderAction 了,因為 它可以在 Action 裏調用 Model裏的 法讀取數據庫,渲染視圖後在呈現,而 RenderPartial 沒有 Action,所以無法做到。
Partial 可以直接輸出內容,它內部是 將 html 內容轉換為 string 字符(MVCHtmlString),然後緩存起來, 最後在壹次性輸出到頁面。顯然,這個轉換的過程,會降低效率,所以通常使用 RenderPartial 代替。
@Html.Action()