15 控制器与视图之数据传递与模型绑定
在我们上篇的内容中,我们讨论了如何创建和使用视图。在这一章中,我们将深入探讨如何在控制器与视图之间传递数据,以及如何进行模型绑定。这些知识对于构建动态网站非常重要,因为它们使得用户输入的数据能够与我们的后端逻辑无缝对接。
数据传递
1. 将数据发送到视图
在ASP.NET Core MVC中,控制器是处理用户请求的主要组件。我们可以通过控制器将数据发送到视图。有几种方法可以做到这一点:
视图数据(ViewData)
使用ViewData
传递数据是最简单的方法之一。ViewData
是一个字典,您可以在控制器中将数据添加到其中,随后在视图中读取这些值。1
2
3
4
5
6
7
8public class HomeController : Controller
{
public IActionResult Index()
{
ViewData["Message"] = "欢迎来到我的网站!";
return View();
}
}在视图中,您可以这样访问这个值:
1
<h1>@ViewData["Message"]</h1>
视图模型(ViewModel)
使用专门的视图模型(ViewModel)是另一种推荐的方式。视图模型是一个类,用于封装视图所需的数据。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public class MyViewModel
{
public string Message { get; set; }
public int Count { get; set; }
}
public class HomeController : Controller
{
public IActionResult Index()
{
var model = new MyViewModel
{
Message = "欢迎来到我的网站!",
Count = 10
};
return View(model);
}
}在视图中,您可以通过强类型的视图模型来访问数据:
1
2
3
4@model MyViewModel
<h1>@Model.Message</h1>
<p>计数: @Model.Count</p>
2. 从视图接收数据
用户输入的数据通常会通过表单提交到控制器。ASP.NET Core MVC通过模型绑定(Model Binding)来处理这些数据。模型绑定的过程是自动的,它会将从表单提交的数据映射到控制器方法的参数中。
模型绑定
模型绑定的工作机制非常强大。下面是一个基本的示例。
1 | public class User |
在视图中,您可以使用 Tag Helpers
创建一个简单的表单:
1 | @model User |
3. 处理复杂模型
有时候,您的模型可能会更复杂,包含嵌套对象或集合。模型绑定同样能处理这些情况:
1 | public class Order |
您的视图可以包含一个包含多个项目的表单:
1 | @model Order |
在控制器中,您可以通过模型绑定容易地获取提交的数据:
1 | [ ] |
结论
在本节中,我们讨论了如何在ASP.NET Core MVC中进行数据传递和模型绑定。通过使用 ViewData
、视图模型和表单,我们能够有效地从控制器向视图传递数据,并将视图中的用户输入数据提交回控制器。这为构建动态和互动丰富的Web应用打下了坚实的基础。
在下一章节中,我们将探讨依赖注入的概念,这是ASP.NET Core框架的核心特性之一,能够帮助我们创建更松耦合和易于测试的应用程序。
15 控制器与视图之数据传递与模型绑定