📅  最后修改于: 2023-12-03 15:29:47.721000             🧑  作者: Mango
控制器是 C# 中 MVC(模型 - 视图 - 控制器)模式中的组成部分之一。它负责处理来自用户的请求,根据请求执行相应的操作,然后返回结果给用户。
控制器通常包含多个动作(action),每个动作处理一个请求。控制器还可以与模型(model)和视图(view)交互,从模型中检索数据并将其传递给视图。
要创建控制器,可以使用 Visual Studio 中的“添加新项”功能。右键单击解决方案资源管理器中的项目文件夹,然后选择“添加”>“新建项”。在弹出窗口中,选择“MVC 控制器类”,命名控制器并单击“添加”按钮即可创建控制器。
public class HelloWorldController : Controller
{
public IActionResult Index()
{
return View();
}
}
上面的代码示例创建了一个名为 HelloWorldController 的控制器,它包含一个名为 Index 的动作。 Controller
类是 MVC 框架中的基本控制器类,需要继承该类才能创建控制器。
控制器的动作是处理请求的核心部分。动作负责执行请求的操作并返回对用户的响应。动作的返回值通常是 IActionResult
类型,它表示操作执行的结果。
public IActionResult Index(string name)
{
ViewData["Message"] = $"Hello {name}!";
return View();
}
上面的代码示例演示了一个带有参数的动作。该动作使用视图数据(ViewData)传递欢迎消息,该消息包含字符串参数 name 指定的名称。
控制器还可以从请求中检索数据,并将数据保存到模型中以供后续使用:
[HttpPost]
public IActionResult Login(UserModel model)
{
var user = _userService.Login(model);
if (user == null)
{
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
return RedirectToAction("Index", "Home");
}
上面的代码示例演示了一个处理登录请求的动作。该动作从请求中提取用户模型数据,并将其传递给 UserService 中的 Login 方法,以验证用户是否有效。
控制器的另一个重要部分是视图。视图负责呈现控制器执行操作的结果,通常由 HTML 和 C# 代码组成。
<h1>@ViewData["Message"]</h1>
上面的代码示例演示了一个简单的视图,它使用 ViewData 传递消息数据并将其呈现在页面上。
控制器是 MVC 模式中的一个组成部分,它负责代表用户处理请求并将结果返回给用户。控制器的动作是处理请求的核心部分,它通常与模型和视图一起使用。要创建控制器,可以使用 Visual Studio 的“添加新项”功能。