Views中的文件
视图页(Index.cshtml)
public IActionResult Index() { //返回当前视图页: return View(); } public IActionResult Index() { //通过绝对路径访问其他视图页 return View("~/Views/Home/Privacy.cshtml"); } public IActionResult Index() { //通过相对路径访问其他视图页(../表示返回上一层文件夹,../../表示返回上上一层文件夹,以此类推...) return View("../Views/Home/Privacy.cshtml"); }
分部视图(_ValidationScriptsPartial.cshtml)
官网:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/partial?view=aspnetcore-5.0
分部视图的文件名通常以下划线 (_
) 开头
视图中使用:
//视图中使用 await Html.PartialAsync("_ValidationScriptsPartial")
控制器中使用:
public IActionResult OnGetPartial() {
//跳转部分视图 return PartialView("_ValidationScriptsPartial.cshtml"); }
布局页(_Layout.cshtml)
@{ //引用布局页 Layout = "_Layout"; //不使用布局页 //Layout = null; }
默认情况下,每个布局必须调用 @RenderBody();表示呈现视图的内容;
要让视图引擎忽略正文或节,请调用 IgnoreSection和 IgnoreBody方法。(注:这两个方法我在视图页中不知道怎么使用,有知道的告诉下。)
节点:
@section Scripts { <script type="text/javascript" src="~/scripts/main.js"></script> //调用分部视图 <partial name="_ValidationScriptsPartial.cshtml" /> }
//异步调用"Scripts" @await RenderSectionAsync("Scripts", required: false)
视图起始页(_ViewStart.cshtml)
作用于当前文件夹下,在呈现每个视图之前运行代码;
放在Views文件夹下,使Views文件夹下所有的视图都引用布局页;
视图导入共享页(_ViewImports.cshtml)
使Views文件夹下所有的视图文件共享引用的类型等等;作用于当前文件夹下;
支持的指令:
@addTagHelper
@removeTagHelper
@tagHelperPrefix
@using
@model
@inherits
@inject
向视图中传递数据
想了解ViewMode、ViewData、ViewBag使用可以去官方地址看看
ViewMode传递多个类型
public class Student { public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; } } public class Teacher { public string Name { get; set; } public string Subject { get; set; } }
控制器:
public IActionResult Index() { var student = new Student() { Name = "zero", Age = 12, Sex = "男" }; var teacher = new Teacher() { Name = "王老师", Subject = "语文" }; //传递多个类型(Tuple.Create最多支持8个) return View(Tuple.Create(student, teacher)); }
视图:
@using AspNetCoreIOC.Models @model Tuple<Student, Teacher> <ul> <li>@Model.Item1.Name</li> <li>@Model.Item1.Age</li> <li>@Model.Item1.Sex</li> </ul> <ul> <li>@Model.Item2.Name</li> <li>@Model.Item2.Subject</li> </ul>