[.NET MVC][筆記] Razor 主版頁面框架

執行順序
_ViewStart ==> Controler View的_ViewStart ==> View頁面 ==> 主版頁面

執行順序

_ViewStart ==> Controler View的_ViewStart ==> View頁面 ==> 主版頁面

 

_ViewStart.cshtml檔案

/Views/_ViewStart.cshtml :在Views目錄下任何View被載入前就會先被載入

/Views/Home/_ViewStart.cshtml : 在HomeController下的View被載入前會先被載入。在Controller同名的Views子目錄也都能出現此檔案來達到根據Controller劃分的預設效果。

 

Layout

類似WebForm的Master頁面, 習慣配置於/Views/Shared/_Layout.cshtml,通常會在_ViewStart.cshtml中加入。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

挖浻方式

與Web Form的挖浻方式

相比,_Layout.cshtml頁面有二種挖浻方式:

@RenderBody 預設區段(子頁面)位置(在主版頁面中只能呼叫一次)

@RenderBody()

@RenderSection 具名區段(需設定Secion名稱,以及子頁面是否必須作)

@RenderSection("scripts", required: false)

如上, 增加一個叫"Scripts"的具名區段,但不要求所有套用此Layout的子頁面均需撰寫該區段內容

若主版頁面規定所有View都需具有該RenderSection片段而對應View頁面沒有撰寫,執行時會產生"區段尚未定義: "XXX" 的伺服器錯誤”。