.net mvc actionresult 返回字符串_理解ASP.NET Core的MVC模式

d5a3645979ec2743a7992135fee7d01e.png

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

一、理解MVC模式

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

9de3d4e21fbabf9ff6d5e7f0030fd79e.png

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的执行过程如下:

cb0206f49c3b635ce5d2854679ea6337.png

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值