一、前言
1、本教程主要内容
- ASP.NET Core MVC控制器简介
- ASP.NET Core MVC控制器操作简介
- ASP.NET Core MVC控制器操作简介返回类型简介
- ASP.NET Core MVC控制器操作简介返回类型示例
- ASP.NET Core MVC控制器参数映射逻辑说明
- ASP.NET Core MVC控制器参数映射/获取示例
2、本教程环境信息
软件/环境 | 说明 |
---|---|
操作系统 | Windows 10 |
SDK | 2.1.401 |
ASP.NET Core | 2.1.3 |
IDE | Visual Studio Code 1.27 |
浏览器 | Chrome 69 |
本篇代码以下代码进行调整:https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-02
3、前置知识
你可能需要的前置知识
- MVC框架/模式介绍
https://baike.baidu.com/item/mvc
二、ASP.NET Core MVC 控制器简介
1、ASP.NET Core MVC 控制器概述
在MVC Web框架中,路由模块会对接收到的请求进行匹配并转交由对应的控制器(Controller)进行处理。
控制器的作用就是处理接收到的请求,解析用户输入并执行对应程序理逻辑,然后返回对应的输出。
用户的输入可以是QueryString、FormData、也可以是HTTP Header、HTTP Body。
控制器的输出格式通常是:HTML、JSON、XML、普通文本
2、控制器(Controller)的定义
所有Controller类都必须直接或间接继承于Microsoft.AspNetCore.Mvc.ControllerBase
。为了搭配视图引擎使用,ASP.NET Core MVC 框架内置了 Microsoft.AspNetCore.Mvc.Controller
类,提供了一些视图引擎需要的特性。所以,默认我们继承该类即可。
3、控制器(Controller)的命名
Controller类的类名(ClassName)推荐以Controller
为结尾(不区分大小写)。
例如:
- HomeController
- TestController
路由模块去掉结尾的Controller作为ControllerName。
那么对应的ControllerName
则分别是Home
、Test
。这也是路由映射到Controller的主要标识。
当然,你也可以不以Controller作为控制器类名(ClassName)的固定后缀,那么路由模块会以完整的类名(ClassName)作为ControllerName
在 ASP.NET MVC框架中,控制器(Controller)类名必须以Controller作为后缀,但是在 ASP.NET Core MVC框架中去掉了这个限制。
以下Controller的定义都是可以的:
//推荐
public class HomeController : Controller
{
//ControllerName=Home
}
public class HomeController : BaseController
{
//ControllerName=Home
}
public class Test : Controller
{
//ControllerName=Test
}
三、ASP.NET Core MVC 控制器操作简介
1、ASP.NET Core MVC 控制器操作概述
控制器(Controller)操作(Action)就是控制器接收到请求后实际用与处理请求的程序方法/函数。
Controller接收到请求后根据路由的ActionName找到对应的Action,然后将用户的输入映射到该Action的参数,最终Action实际执行完成后再返回对应的输出。
2、控制器操作(Action)的定义
Action必须是控制器中定义的公有非静态方法,例如:
public class HomeController : Controller
{
public IActionResult Index()
{
return Content("Hello World ! -ken.io");
}
public string Test()
{
return "test";
}
public void DoSomething(<