Asp.Net Core 入门—— 布局视图_Layout.cshtml

Posted jesen1315

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>
        <[email protected]()是注入视图特定内容的位置。例如,如果使用此布局视图呈现 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文件指定的设置。

以上是关于Asp.Net Core 入门—— 布局视图_Layout.cshtml的主要内容,如果未能解决你的问题,请参考以下文章

[MVC&Core]ASP.NET Core MVC 视图传值入门

Asp.Net Core 入门—— Taghelper

共享布局视图不适用于 ASP.NET Core 2.1 中的所有视图

[MVC&Core]ASP.NET Core MVC 视图传值入门

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门

007.Adding a view to an ASP.NET Core MVC app -- 在asp.net core mvc中添加视图