ASP.NET MVC 里的部分視圖,相當於 Web Form 里的 User Control。我們的頁面往往會有許多重用的地方,可以進行封裝重用。
使用部分視圖有以下優點: 1. 可以簡寫代碼。 2. 頁面代碼更加清晰、更好維護。
在視圖里有多種方法可以 加載部分視圖,包括: Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 方法
partial 與 RenderPartial 方法
Razor 語法: @Html.Partial() 與 @{Html.RenderPartial();}
區別:Partial 可以直接輸出內容,它內部是 將 html 內容轉換為 string 字符(MVCHtmlString),然后緩存起來,最后在一次性輸出到頁面。顯然,這個轉換的過程,會降低效率,所以通常使用 RenderPartial 代替。 指示抓取頁面類容,不能抓方法
在Partial的Action中傳遞一些數據,並在Partial的部分視圖中調用。
在Index視圖中加載Partial視圖。下面兩種方式都可以加載成功,但第二種效率更高,所以我們使用Html.RenderPartial加載視圖
運行以后頁面內容加載過來了,但並沒有加載到Action內部的ViewBag變量。
RenderAction 與 Action
Razor 語法:
@{Html.RenderAction();}與@Html.Action();
區別:Action 也是直接輸出,和 Partial 一樣,也存在一個轉換的過程。不如 RenderAction 直接輸出到當前 HttpContext 的效率高。
除此之外,Action與Partial相比,Action訪問了控制器中的Action,執行了Action內部的業務。
運行之后,ViewBag對象中的值也獲取到了
RenderPage 與 RenderPartial
Razor 語法:
@{Html.RenderPartial();} 與 @RenderPage()
區別:也可以使用 RenderPage 來呈現部分,但它不能使用 原來視圖的 Model 和 ViewData ,只能通過參數來傳遞。而 RenderPartial 可以使用原來視圖的 Model 和 ViewData。
添加代碼並運行,@RenderPage也並沒有執行Action。