ASP.NET Core MVC中视图

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使用可以去官方地址看看

https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/overview?view=aspnetcore-5.0#passing-data-to-views

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>

 

原文地址:https://www.cnblogs.com/-zzc/p/14328031.html