1. 程式人生 > >MVC部分視圖的使用(Html.Partial/RenderPartial、Html.Action/RenderAction、RenderPage)

MVC部分視圖的使用(Html.Partial/RenderPartial、Html.Action/RenderAction、RenderPage)

razor語法 一次 span tle viewdata 多重 mls 字符 抓取

ASP.NET MVC 裏頁面往往會有許多重用的地方,可以進行封裝重用。
使用部分視圖有以下優點: 1. 可以簡寫代碼。 2. 頁面代碼更加清晰、更好維護。
在視圖裏有多種方法可以 加載部分視圖,包括: Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 方法

一、Partial與RenderPartial

1.Razor 語法: @Html.Partial() 與 @{Html.RenderPartial();} 2.區別:Partial 可以直接輸出內容,它內部是將 html 內容轉換為 string 字符(MVCHtmlString)(進行Html編碼),然後緩存起來,最後在一次性輸出到頁面。顯然,這個轉換的過程,會降低效率,所以通常使用 RenderPartial 代替。 這兩者都只是抓取分部視圖頁面內容,不能執行分部視圖方法,所以用Partial或RenderPartial方法來顯示分部視圖不用建立對應的Action,因為不走Action. 二、Action與RenderAction 1.Razor 語法:@Html.Action()與@{Html.RenderAction();}
2.區別:Action 也是直接輸出,和 Partial 一樣,也存在一個轉換的過程。不如 RenderAction 直接輸出到當前 HttpContext 的效率高。
除此之外,Action與Partial相比,Action訪問了控制器中的Action,執行了Action內部的業務。 三、RenderPage 1.Razor語法:@RenderPage()
2.區別:也可以使用 RenderPage 來呈現部分,但它不能使用 原來視圖的 Model 和 ViewData ,只能通過參數來傳遞。而 RenderPartial、RenderAction 可以使用原來視圖的 Model 和 ViewData。@RenderPage也並沒有執行Action。 不傳參的情況
<!DOCTYPE html>   
<html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> <h3>我是首頁</h3> <section> <h4>分部視圖</h4> @RenderPage(
"~/Views/Templates/Partial1.cshtml") </section> </div> </body> </html>

傳參的情況

<!DOCTYPE html>  
<html>  
<head>  
    <meta name="viewport" content="width=device-width" />  
    <title>Index</title>  
</head>  
<body>  
    
<div> <h3>我是首頁</h3> <section> <h4>分部視圖</h4> @RenderPage("~/Views/Templates/Partial1.cshtml",new { param1="longxi",param2=""}) </section> </div> </body> </html>

Partial1.cshtml

@{   
    var param = string.Format("{0}-{1}", PageData["param1"], PageData["param2"]);  
}  
@Html.Raw(param)  

MVC部分視圖的使用(Html.Partial/RenderPartial、Html.Action/RenderAction、RenderPage)