View 视图
在布局模板 _layout.html 中添加公共模块
@await RenderSectionAsync("bottom",false);
在Action 视图 .cshtml 文件中引用
@section bottom { <div> <p>我是页脚 bootom 模块 </p> </div> }
_ViewStart.cshtml 模板引用文件
- 当_ViewStart.cshtml放在~/Views/Shared/ViewStart.cshtml 文件下时,对所有文件起作用。
- 当放在某个控制器的视图文件夹下时,仅对当前视图文件起作用。
_ViewImports.cshtml 集中导入命名空间
@using MvcMovie
@using MvcMovie.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
受影响的范围同: _ViewStart
Partial View 部分视图
作用:
- 复用View代码
- @Html.Partial("_PartialViewName",data)
- 没有自己的Model,需要调用者传递数据
@model StudentViewModel @{ ViewData["Title"] = "Home Page"; } @*@Html.RenderPartialAsync("_StudentTable",Model.Students) 或使用以下标签引用部分视图*@ <partial name="_StudentTable" for="Students"/>
_StudentTable.cshtml 视图
@model IEnumerable<Student> <div> <table class="table"> <thead> <tr> <th scope="col">ID</th> <th scope="col"> 姓名 </th> <th scope="col"> 年龄 </th> </tr> </thead> <tbody> @foreach (var m in Model) { <partial name="_StudentRow" for="@m" /> } </tbody> </table> </div>
_StudentRow.cshtml 视图
@model Student <tr scope="row"> <td>@Model.Id</td> <td>@Model.Name</td> <td>@Model.Age</td> <td><a asp-action="Detail" asp-route-id="@Model.Id">明细</a></td> </tr>
View Components 视图组件
-
可复用
-
独立的组件
-
有独立的逻辑和数据
-
相当于迷你 MVC 请求
-
不依赖于低级 View 的数据
组件目录结构:
using Microsoft.AspNetCore.Mvc; namespace MvcMovie.ViewComponents { public class WelcomeViewComponent:ViewComponent { public IViewComponentResult Invoke() { int count = 9; return View("Default",count); //注意:当传入参数是字符串是,需要设置一个空的视图名称,如下 //return View("", count); } } }
Default.cshtml 视图
@model int
<h1>学生总数:@Model</h1>
客户视图引用组件
@await Component.InvokeAsync("Welcome")