一,結構如下圖
二,布局頁和視圖布局頁
1》使用方法一
_ViewStart.cshtml
@{ Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>視圖布局頁_ViewStart.cshtml</h2>
_Layout.cshtml
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> </head> <body> <div> <h2>布局頁_Layout.cshtml</h2> @RenderBody() </div> </body> </html>
綜上:
1》當使用這種寫法時:若視圖布局頁_ViewStart.cshtml不存在或者Layout = "~/Views/Shared/_Layout.cshtml";指向的頁面錯誤,都會造成視圖的布局頁(_Layout.cshtml)使用失敗
2》但是視圖布局頁_ViewStart.cshtml本身的樣式等一樣應用全局,並沒有失效
2》使用方法二(不使用視圖布局頁_ViewStart.cshtml)
_LayoutNew.cshtml
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> @RenderSection("Head", false) </head> <body> <div> <h2> 布局頁_LayoutNew.cshtml</h2> @RenderSection("Main", false) </div> </body> </html>
hz.cshtml使用模板
@{ Layout = "~/Views/Shared/_LayoutNew.cshtml"; } @section Head{} @section Main{ <h2> hz頁面使用_LayoutNew.cshtml模板</h2> }
即:這樣應用模板一樣可以成功,在這里需要注意的是@section Head{}@section Main{}名字需要和布局頁定義的一樣
三,分部頁的使用(不需要創建action,使用簡單 )
Index.cshtml
<h2>Index頁面</h2> @Html.Partial("_PartialView")
不需要使用控制器(Controllers)和方法(action),直接可以使用這個頁面的元素
四,Html.RenderPartial與 Html.RenderAction的區別
Html.RenderPartial:這個只會加載頁面,而不會加載Controller中的Action,所以頁面的Model是在當前加載頁面傳過去,如@{Html.RenderPartial("Menu",Model.List);},同時Menu頁面接收的類型須和Model.List一致
1》同一個目錄下(意思是當前嵌入頁面和分部頁頁面存放在同一個文件夾下)Html.RenderPartial的使用:@{Html.RenderPartial("Menu");}
2》分部頁放在不同目錄中, Html.RenderPartial的使用:@{Html.RenderPartial("~/Views/Home/Menu.cshtml");}
Html.RenderAction:是通過Controller中的Action來調用,所以可以通過Action來返回參數
1》 調用例子: @{Html.RenderAction("Menu", "Home");}