除了mvc模式还有什么模式_理解ASP.NET Core的MVC模式

在前面的文章中,我们已经讨论过了ASP.NET Core中的中间件以及路由等功能,在本文中,我们来讨论ASP.NET Core的MVC模式。

一、理解MVC模式

MVC全名是Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,它是Web应用程序中一种常用的架构模式。

除了mvc模式还有什么模式_理解ASP.NET Core的MVC模式_第1张图片

MVC模式最主要的特点是关注点分离,它将应用程序分离为三个独立的部分。ASP.NET Core MVC是构建在ASP.NET Core之上的MVC框架。

要在应用程序中使用MVC,首先需要添加MVC中间件:

public void ConfigureServices(IServiceCollection services){    services.AddMvc();}public void Configure(IApplicationBuilder app, IHostingEnvironment env){    app.UseMvc();}

在ASP.NET Core MVC框架中,除了Controller、Action外,它还包括路由、模型绑定、模型验证、过滤器等功能。在上一篇文章:理解ASP.NET Core中的路由 中,我们已经讨论了ASP.NET Core中的路由,通过路由能够将请求正确地映射到相应的Controller与Action。

二、Controller与Action

Controller是一个类,它具体如下特点:

1、它继承自Controller类,或ControllerBase类;

2、它的命名以Controller结尾,如HomeController;

3、一个Controller中可以包含一个或多个Action;

Action则是定义在Controller中的public类型的方法,根据实际情况,它可以包含参数,这些参数通常会从HTTP请求对象中获取;Action方法的返回值可以是void也可以是IActionResult类型或ActionResult类型的对象。

以下一个典型的Controller:

public class BlogsController : Controller{    public IActionResult Index()    {    }    public IActionResult GetTopN(int n)    {    }}

三、Action方法的返回值

对于Action方法,它的返回值IActionResult或ActionResult用于表示当前Action的执行结果。

注意:IActionResult或ActionResult并非最终要返回给请求方的响应结果,这个结果还会由MVC进一步处理,处理之后,才会返回给请求方。

常见的返回结果包括状态码、重定向、内容等,如OkResult、BadRequestResult、RedirectResult、ViewResult、PartialViewResult、ContentResult等,这些类均实现了IActionResult接口。

在ControllerBase类中定义了一些比较方便返回上述结果的方法,比如要想返回一个OkResult对象,只要在当前Controller中调用基类的Ok()方法即可,类似的方法还有BadRequest()、NotFound()、View()等。

[HttpGet("{id}")]public ActionResult Get(long id){    if(id <= 0)    {        return BadRequest();    }    var employee = GetEmployee(id);    if(employee == null)    {        return NotFound();    }    return employee;}

上例中的Action返回值为ActionResult类型,相比IActionResult,它的优点是它既可以返回一个IActionResult类型的对象,如BadRequest()方法将会返回一个BadRequestResult对象,同时,它还可以返回一个T类型的对象,如employee对象。

注意:ControllerBase类中除了包含用于快捷返回相关IActionResult的一系列方法外,它还包含当前的HTTP上下文对象、ModelState以及路由数据等内容。

四、ASP.NET Core MVC的执行过程

前面提到ASP.NET Core MVC不仅包含Controller与Action等内容,还包含模型绑定、模型验证、过滤器等功能,它们在MVC的执行过程中都具有重要作用。

模型绑定的作用是将HTTP请求中的数据绑定到Action方法的参数上;模型验证是对绑定成功后的数据进行验证的过程,只有通过了验证后,才会继续执行Action方法的内容。过滤器正如其名称的含义一样,它们能够添加在应用程序的某些功能中,起到过滤的作用,在这些功能执行的前后位置处将会调用所添加的过滤器。

因此,整体来看,ASP.NET Core MVC的执行过程如下: 

除了mvc模式还有什么模式_理解ASP.NET Core的MVC模式_第2张图片

总结

本文讨论了ASP.NET Core中的MVC模式、Controller与Action的特点以及MVC的执行过程。

推荐阅读

理解ASP.NET Core中的中间件

理解ASP.NET Core中的路由

-- End --

(如果您喜欢这篇文章,请您将它分享给更多的人)

除了mvc模式还有什么模式_理解ASP.NET Core的MVC模式_第3张图片

你可能感兴趣的:(除了mvc模式还有什么模式)