佈局視圖_Layout.cshtml

 轉:https://www.cnblogs.com/jesen1315/p/11041967.html

  佈局視圖和我們在Asp.Net MVC一樣,佈局視圖_Layout.cshtml使得所有視圖保持一致的外觀變得更加容易,因爲我們只有一個要修改的佈局視圖文件,更改後將立即反映在整個應用程序的所有視圖中。

  在 ASP.NET Core MVC 中,有一些視圖文件,如佈局的視圖,_ViewStart.cshtml 和_ViewImports.cshtml 等其他.cshtml 文件的文件名以下劃線開頭,這些文件名中的前下劃線表示這些文件不是直接面向瀏覽器。

  我們可以在單個應用程序中包含多個佈局視圖文件。比如一個佈局視圖文件服務爲管理員用戶,另外一個不同的佈局視圖文件服務於普通用戶。

  我們一般將佈局視圖建在Views/Shared文件夾下,以_Layout.cshtml命名。

複製代碼
<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>
        <!--@RenderBody()是注入視圖特定內容的位置。例如,如果使用此佈局視圖呈現 index.chtml 視圖,則會在我們 調用@RenderBody()方法 的位置注入 index.cshtml 視圖內容 。-->
        @RenderBody()
    </div>

    @*@if (IsSectionDefined("Scripts"))
    {
        @RenderSection("Scripts");
    }*@

    @RenderSection("Scripts", false);

</body>
</html>
複製代碼

  我們可以在Views/_ViewStart.cshtml指定啓用哪個佈局頁,因爲請求的時候會先找到_ViewStart.cshtml。

複製代碼
@{
    Layout = "_Layout";
}

@if (User.IsInRole("Admin"))
{
    Layout = "_AdminLayout";
}
else
{
    Layout = "_NoAdminLayout";
}
複製代碼

  同時,如果我們在很多頁面都使用同一個命名空間,同一個model的話,我們可以在Views/_ViewImports.cshtml文件中添加共用的命名空間,model。

複製代碼
@using StudentManagement.Models;
@using StudentManagement.ViewModels;

@*還支持以下指令*@
@*
    @addTagHelper
    @removeTagHelper
    @tagHelperPrefix
    @model
    @inherits
    @inject
*@
複製代碼

  需要注意的是,_ViewStart和_ViewImports是支持分層的,除了將它放在 Views 文件夾中之外,我們還可以在 Views 文件夾的“Home”子文件夾中放置另一個_ViewImports,在文件 Home 的文件夾中的\_ViewImports將覆蓋在 Shared 文件夾中的\_ViewImports文件指定的設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章