学海无涯

导航

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")

 

posted on 2023-02-14 10:33  宁静致远.  阅读(23)  评论(0编辑  收藏  举报