Asp.Net Core 入門(五)—— 布局視圖_Layout.cshtml


  布局視圖和我們在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文件指定的設置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM