将数据传递到 ASP.NET CoreMVC 中展示
admin
2021-06-03本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP)
本文出自《从零开始学 ASP.NET Core 与 EntityFramework Core》目录
视频课程效果更佳:跨平台开发实战掌握 ASP.NET Core 与 EntityFramework Core
终于要将数据呈现到 ASP.NET Core MVC 中的 视图 上了
在本章节中,我们将讨论在 ASP.NET Core MVC 中将数据传递给 View 的不同方法。
将数据从控制器传递到视图的三种方法
在 ASP.NET Core MVC 中,有 3 种方法可以将数据从控制器传递到视图:
- 使用 ViewData
- 使用 ViewBag
- 使用强类型模型对象。这也称为强类型视图。
通过使用ViewData
或ViewBag
传递数据,我们会创建一个弱类型的视图。我们待会儿讨论弱类型视图的含义。
使用 ViewData 将数据从 Controller 传递到视图
我们希望将HomeController的 Details()操作方法中的Student模型数据和视图页面的 Title 传递给 Details.cshtml 视图。因此,修改 HomeController 中的 Details()操作方法,如下所示。
public ViewResult Details()
{
Student model = _studentRepository.GetStudent(1);
//使用ViewData将PageTitle和Student模型传递给View
ViewData["PageTitle"] = "Student Details";
ViewData["Student"] = model;
return View();
}
在视图中访问 ViewData
要将 HomeController 的 Details()操作方法中的 ViewData 传递到视图,请修改 Details.cshtml 文件中的代码,如下所示。
@using StudentManagement.Model
<html>
<head>
<title></title>
</head>
<body>
<h3>@ViewData["PageTitle"]</h3>
@{ var student = ViewData["Student"] as Student; }
<div>
姓名 : @student.Name
</div>
<div>
邮箱 : @student.Email
</div>
<div>
主修科目 : @student.Major
</div>
</body>
</html>
ViewData
- ViewData 是弱类型的字典(dictionary )对象。
- 我们使用 string 类型的键值,来存储和查询 ViewData 字典中的数据,。
- 可以从 ViewData 字典直接访问数据,而无需将数据转换为 string 类型。
- 如果我们访问的是任何其他类型的数据,我们需要将其显式地转换为我们期望的类型。
- 在我们的例子中,我们声明Student对象的学生,分别访问Student对象的 Name,Email 和 Major 属性。
- ViewData 在运行时会进行动态解析,因此它不提供编译时类型检查,因此我们不会获得智能提示。
- 由于我们没有智能感知,因此编写代码的速度降低,错误拼写和打错的可能性也很高。
- 我们只会在运行时才知道这些错误。
- 出于这个原因,我们通常不使用 ViewData。
- 当我们使用 ViewData 时,我们最终会创建一个弱类型的视图。
下一个视频:使用 ViewBag 将数据从 Controller 传递到 View
文章说明
如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦
未得到授权不得擅自转载本文内容,52abp.com 保留版权
感谢您对我的支持