布局视图

  • 1、布局视图
  • 2、ASP.NET Core MVC 中布局页面中 Sections
  • 3、什么是_ViewStart.cshtml 文件
  • 4、_ViewImports.cshtml 文件

1、布局视图

Web 应用程序网站通常由以下部分组成

  • Header-头部
  • Footer-页脚
  • Menu-导航菜单
  • View-具体内容的视图

如果没有布局视图,我们将在每个视图中,重复显示很多 HTML 代码,比如菜单栏,导航信息,关于我们,footer 页脚等等。

  • 布局视图不特定于控制器,通常放在"Views"文件夹的子文件夹"Shared"中。
  • 默认情况下,布局视图文件名为_Layout.cshtml。 前下划线表示这些文件不是直接面向浏览器的。
  • 可以在单个应用程序中包含多个布局视图文件。比如一个布局视图文件服务为管理员用户,另外一个不同的布局视图文件服务于普通用户。

(1)创建布局视图
选择"Razor 布局"并单击"添加"按钮,自动生成_Layout.cshtml 文件。

<!DOCTYPE html>
<html><head><meta name="viewport" content="width=device-width"/><title>@ViewBag.Title</title></head><body><div>@RenderBody()</div></body>
</html>

@RenderBody()是注入视图特定内容的位置。如果使用此布局视图呈现 index.chtml 视图,则会在我们调用@RenderBody()方法的位置注入 index.cshtml 视图内容 。

(2)使用布局视图
布局视图与 details.cshtml 一起使用,需要修改 details.cshtml 中的代码以包含 Layout 属性。

@model StudentManagement.ViewModels.HomeDetailsViewModel @{ Layout =
"~/Views/Shared/_Layout.cshtml"; ViewBag.Title = "Student Details"; }
<h3>@Model.PageTitle</h3>
<div>姓名 : @Model.Student.Name
</div>
<div>邮箱 : @Model.Student.Email
</div>
<div>主修科目 : @Model.Student.Major
</div>

2、ASP.NET Core MVC 中布局页面中 Sections

一个自定义 JavaScript 文件,项目中只有一些视图才需要这些文件。但是如果所有视图都需要自定义 JavaScript 文件,那么我们可以将它放在 Layout 页面中,如下所示。

<html>
<head><meta name="viewport" content="width=device-width"/><title>@ViewBag.Title</title>
</head>
<body><div>@RenderBody()</div><script src="~/js/CustomScript.js"></script>
</body>
</html>

假设我们只在 Details 视图中需要它,而在其他视图中不需要它。我们就可以使用一个节点(Section)。

(1)渲染 Sections
在布局页面中,调用 RenderSection()方法。

<html><head><meta name="viewport" content="width=device-width"/><title>@ViewBag.Title</title></head><body><div>@RenderBody()</div>@RenderSection("Scripts", required: false)</body>
</html>

注意:
RenderSection()方法有 2 个参数。第一个参数指定节的名称。第二个参数参数指定该部分是必需的还是可选的。

(2)提供节内容
Details 视图在布局页面的"Scripts"节点中包含<script>标记。

@model StudentManagement.VIewModels.HomeDetailsViewModel
@{Layout = "~/Views/Shared/_Layout.cshtml";ViewBag.Title = "学生详情页";}<h3>@Model.PageTitle</h3><div>姓名 : @Model.Student.Name</div><div>邮箱 : @Model.Student.Email</div><div>主修科目 : @Model.Student.Major</div>@section Scripts{<script src="~/js/CustomScript.js"></script>
}

3、什么是_ViewStart.cshtml 文件

_ViewStart.cshtml 文件中的代码在调用单个视图中的代码之前先执行。这意味着,我们可以将公共代码移动到_ViewStart.cshtml文件中,而不用在每个单独的视图中设置 Layout 属性。

@{Layout = "_AdminLayout";}

(1)_ViewStart.cshtml 文件支持分层:

Home 子文件夹中 ViewStart 文件中指定的布局页面,将覆盖 Views 文件夹中 ViewStart 文件中指定的布局页面。

(2)逻辑判断调用布局视图
在_ViewStart.cshtml 中可以通过逻辑判断登录用户角色来选择对应的布局视图。

@{if (User.IsInRole("Admin")){Layout = "_AdminLayout";}else{Layout = "_NonAdminLayout";}
}

4、_ViewImports.cshtml 文件

_ViewImports.cshtml文件通常放在 Views 文件夹中。它用于引入公共命名空间,因此我们不必在每个视图中引用命名空间。

如果在 Viewimport 文件中包含以下 2 个命名空间, 则这两个命名空间中的所有类型都可用于 “Home” 文件夹中的每个视图, 而无需再次引入完整的命名空间。
@using StudentManagement.Models;
@using StudentManagement.ViewModels;

_ViewImports.cshtml 文件是分层的

[九] ASP.NET CoreMVC 中的布局视图相关推荐

  1. asp.net mvc 中的部分视图

    使用方法:@Html.Action(action, controller) 加载局部页面. 例如在模板页中使用:@Html.Action("Contact", "Comp ...

  2. ASP.NET MVC 中删除无用视图引擎

    默认情况下,ASP.NET MVC 同时支持 WebForm 和 Razor 引擎,而我们通常在同一个项目中只用到了一种视图引擎,如Razor,那么我们就移除没有使用的视图引擎,提高View视图的检索 ...

  3. ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core Razor 布局视图 - ASP.NET Core 基础 ...

  4. 关于 ASP.NET MVC 中的视图生成

    在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通 ...

  5. ASP.NET Core 中文文档 第四章 MVC(3.9)视图组件

    作者: Rick Anderson 翻译: 娄宇(Lyrics) 校对: 高嵩 章节: 介绍视图组件 创建视图组件 调用视图组件 演练:创建一个简单的视图组件 附加的资源 查看或下载示例代码 介绍视图 ...

  6. android ,动态布局 butterknife,与Butterknife绑定在android中动态添加视图

    如何绑定布局中存在的视图,该视图使用ButterKnife动态添加到父视图中. 我有一个LinearLayout说容器.我有一个自定义布局,其中包含两个按钮,将此布局称为子视图 在活动中,我将chil ...

  7. android+布局倾斜,android – 如何在Eclipse图形布局视图中使斜...

    在Eclipse中工作,我试图将一些斜体文本放到布局上.问题是,当我设置时 android:textStyle ="italic",文字消失. (内容的高度变为0,整个TextVi ...

  8. android addview指定位置,Android开发中,请问当在一个视图中addView另一个布局视图时为什么报错?...

    Android开发中,我在一个视图中addView另一个布局视图(该视图通过inflate加载获得,其中root为null即没有附加parent视图),为什么还是会报错误: The specified ...

  9. Android Studio xml文件中的布局预览视图

    操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...

最新文章

  1. native2ascii用法
  2. win7 nvme 支持补丁_UpdatePack7R2 v20.8.13 Win7 更新补丁包
  3. 计算机相关冷门专业,211名校冷门专业和双非计算机专业,该如何选择?过来人告诉你...
  4. 很多人问,到底要不要转管理
  5. NoSQL开篇——为什么要使用NoSQL
  6. Raft算法的Leader选举和日志复制过程
  7. SQL Server 20082005维护计划对比
  8. Linux 命令 (tar,权限,管道)
  9. VC++等待光标的两种实现方式
  10. python怎么安装xlutils_Python3安装xlutils
  11. mysql客户端备份数据库失败,mysqlhotcopy的使用和安装方法【快速备份mysql数据库】及错误解...
  12. AndroidStudio遇到的问题
  13. excel服务器bom修改,勤哲Excel服务器物料清单BOM表的实现方法
  14. 微博如何快速批量取消关注脚本教程
  15. html5 06携程网案例、 全屏插件的使用
  16. Mac Mounty挂载NTFS硬盘报错
  17. tecplot云图——数据文本格式2
  18. torch.bmm()函数解读
  19. 如何在JavaScript中直观地设计状态
  20. ubuntu下安装librecad

热门文章

  1. Python 实现数字的打印
  2. 走进“开源SDR实验室” 一起玩转GNU Radio:gr-channels
  3. crm营销自动化系统 CRM软件自动化 - whale帷幄
  4. 在树莓派上使用微信聊天
  5. 博图买什么样配置的笔记本_在电脑上安装博途软件电脑运行较为顺畅,笔记本电脑需要怎样的配置?...
  6. 打印机故障——0x00000709错误
  7. 踏浪点神:5.20 恒指黄金原油早盘分析及最新资讯
  8. 【千亿市场】低轨通信卫星,开启6G时代
  9. 3月国内外CTF比赛时间汇总来了
  10. Java实现台阶问题