Author Image

admin

6月前 593

本文作者:梁桐铭- 微软最有价值专家(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 种方法可以将数据从控制器传递到视图:

  1. 使用 ViewData
  2. 使用 ViewBag
  3. 使用强类型模型对象。这也称为强类型视图

通过使用ViewDataViewBag传递数据,我们会创建一个弱类型的视图。我们待会儿讨论弱类型视图的含义。

使用 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 保留版权

感谢您对我的支持

关注微信公众号:角落的白板报

公众号:角落的白板报