首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现:请求的响应

真正的MVC框架中具有一个名为IActionResult的重要结构,顾名思义,IActionResult对象一般会作为Action方法的返回值,针对请求的响应任务基本上会由这个对象来实现。...,为了使Action执行流程(执行Action方法=>将返回值转化成IActionResult对象=>执行IActionResult对象)显得明确而清晰,我们定义了如下这个“什么都没做”的NullActionResult...如果Action方法的返回值是一个Task或者ValueTask对象,它们的Result属性返回的参数这个待转换的数据对象。...在执行了目标Action方法并得到原始的返回值后,我们调用了ToActionResultAsync方法将返回值转换成Task,最终通过执行IActionResult对象进而完成所有的请求处理任务..., returnType)); } } 从上面的代码片段可以看出,在进行针对IActionResult的类型转换过程中使用到的IActionResultTypeMapper对象是针对当前请求的依赖注入容器中提取的

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

【5min+】美化API,包装AspNetCore的返回结果

当然,不是所有的情况下,结果都是返回ObjectResult哦,就如同下面这些情况: 当我们显式返回一个IActionResult的时候 当Action的返回类型为Void,Task等没有返回结果的时候...图中我们就可以看出,我们通常在处理一个文件的时候,就不是返回ObjectResult了,而是返回FileResult。还有其它没有返回值的情况,或者身份验证的情况。...public interface IActionResult { Task ExecuteResultAsync(ActionContext context); } 每一个具体的IActionResult...这样我们就从一个Action返回结果到了我们POSTMan中看到的结果。 返回结果包装 在有了上面的知识基础之后,我们就可以考虑怎么样来实现将返回的结果进行自动包装。...context.HttpContext.Response.StatusCode; 原因是IAsyncResultFilter在执行时,context.HttpContext.Response的具体返回内容还没有被写入,所以只会有一个200的值,而真实的返回值现在都还在

1.2K30
领券