執行順序
_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" 的伺服器錯誤”。