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

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

(ActionContext context) => Task.CompletedTask; } 二、执行IActionResult对象 接下来我们将Action方法返回类型的约束放宽,除了Task和Void...,Action方法的返回类型还可以是IActionResult、TaskIActionResult>和ValueTaskIActionResult>。...如下面的代码片段所示,我们将Action方法FooAsync和Bar的返回类型分别替换成TaskIActionResult>和IActionResult,具体返回的都是一个ContentResult对象...三、IActionResult类型转化 前面的内容对Task方法的返回类型做出了一系列的约束,但是我们知道在真正的MVC框架中,定义在Controller中的Action方法可以采用任意的类型。...我们定义在两个静态只读字段(_taskConvertMethod和_valueTaskConvertMethod)来保存描述这两个泛型方法的MethodInfo对象。

1.1K30

ASP.NET Core 2.2 : 二十. Action的多种数据返回格式处理机制

这样的派生类还有常见的JsonResult和ContentResult等,他们都继承了ActionResult,而ActionResult实现了IActionResult接口。...第三行的ActionResult 类型是在ASP.NET Core 2.1 引入的,它支持IActionResult的子类也支持类似string和Book这样的特定类型。...所以图 2中ActionResult 类型返回的结果被加上引号的意思就是结果类型可能是直接返回的IActionResult的子类,也有可能是string和Book这样的特定类型被封装后的ObjectResult...这部分的主要内容有两个,分别是Result Filters的执行和IActionResult的执行。...由图 2可知这两种类型在执行完毕后,都被封装成了ObjectResult,那么ObjectResult在执行的时候又是如何被转换成string和JSON两种格式的呢? 下一章继续这个话题。

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

    WPF开源项目:WPF-ControlBase

    async TaskIActionResult> Mdi() { return View(); } public async TaskIActionResult...封装到IActionResult中返回给主页面进行加载 其中Controller中的方法返回类型是async Task,也就是整个页面跳转都是在异步中进行的,可以有效的避免页面切换中的卡死效果 4.4...View中的结构和定义 其中View在项目中的定义就是根据Controller中的方法对应,在MVC中要严格按照结构定义[View/Loyout],好处是可以减少代码量,同时使格式统一代码整齐,结构如下...,分别是Large和Small,其中这两种颜色采用注入的方式加载,即可以在程序加载时设置着两种字体的初始值 其他配置 包括中英文、设置标准行高等等可以在程序加载时进行初始化设置,这里不做过多介绍 **总结...net 4.5 如有解决方案程序集无法加载请安装这两个框架

    3.6K30

    WPF开源项目:WPF-ControlBase

    async TaskIActionResult> Mdi() { return View(); } public async TaskIActionResult...封装到IActionResult中返回给主页面进行加载 其中Controller中的方法返回类型是async Task,也就是整个页面跳转都是在异步中进行的,可以有效的避免页面切换中的卡死效果 4.4...View中的结构和定义 其中View在项目中的定义就是根据Controller中的方法对应,在MVC中要严格按照结构定义[View/Loyout],好处是可以减少代码量,同时使格式统一代码整齐,结构如下...,分别是Large和Small,其中这两种颜色采用注入的方式加载,即可以在程序加载时设置着两种字体的初始值 其他配置 包括中英文、设置标准行高等等可以在程序加载时进行初始化设置,这里不做过多介绍 **总结...net 4.5 如有解决方案程序集无法加载请安装这两个框架

    3.5K10

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

    正文 当我们在使用AspNet Core编写控制器的时候,经常会将一个Action的返回结果类型定义为IActionResult,类似于下面的代码: [HttpGet] public IActionResult...ObjectResult是AspNetCore里面对于一般结果的常用返回类型基类,他继承自IActionResult接口: public class ObjectResult : ActionResult...var actionResult = ConvertToActionResult(mapper, returnValue, executor.AsyncResultType); return actionResult...当然,不是所有的情况下,结果都是返回ObjectResult哦,就如同下面这些情况: 当我们显式返回一个IActionResult的时候 当Action的返回类型为Void,Task等没有返回结果的时候...public interface IActionResult { Task ExecuteResultAsync(ActionContext context); } 每一个具体的IActionResult

    1.3K30

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    模型绑定系统: 从各种源(如路由数据、表单域和查询字符串)中检索数据。 Razor在方法参数和公共属性中向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型的属性。...view=aspnetcore-5.0 Web 应用负责检查 ModelState.IsValid 并做出相应响应 if (!...[Remote]:通过在服务器上调用操作方法来验证客户端上的输入。...[Required] [Range] public class Student { [Required] [Range(1,10,ErrorMessage = "id 为 1-10 之间的数字...view=aspnetcore-5.0 特定类型 IActionResult ActionResult 特定类型:最简单的操作返回基元或复杂数据类型(如 string 或自定义对象类型) IActionResult

    2.5K10

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    模型绑定系统: 从各种源(如路由数据、表单域和查询字符串)中检索数据。 Razor在方法参数和公共属性中向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型的属性。...view=aspnetcore-5.0 Web 应用负责检查 ModelState.IsValid 并做出相应响应 if (!...[Remote]:通过在服务器上调用操作方法来验证客户端上的输入。...[Required] [Range] public class Student { [Required] [Range(1,10,ErrorMessage = "id 为 1-10 之间的数字...view=aspnetcore-5.0 特定类型 IActionResult ActionResult 特定类型:最简单的操作返回基元或复杂数据类型(如 string 或自定义对象类型) IActionResult

    2.6K11

    ASP.NET Core 性能优化最佳实践

    同步阻塞会调用导致 线程池饥饿 和响应时间降级。 不要: 通过调用 Task.Wait 或 Task.Result 来阻止异步执行。 在公共代码路径中加锁。...如在进行调用数据读写、I/O 处理和长时间操作的 API 时,存在可用的异步 API。那么务必选择异步 API 。 但是,不要 使用 Task.Run 来包装同步 API 使其异步化。...请参阅 EF 高性能专题 以了解可能提高应用性能的方法: DbContext 池 显式编译的查询 在代码提交之前,我们建议评估上述高性能方法的影响。 编译查询的额外复杂性可能无法一定确保性能提高。...要 在应用程序中包含用于检测和处理导致异常的逻辑。 要 对意外的执行情况抛出或捕获异常。...此时就无法修改 header 了。

    2.6K30

    基于.NetCore开发博客项目 StarBlog - (32) 第一期完结

    Get 方法接口加上 [HttpHead] 来实现对 Head 方法的支持 过滤和搜索的接口需要对参数进行 trim 不应该将接口的返回值都修改为 ApiResponse 类型,应该保留框架的 ActionResult...这些响应并不是通过异常机制处理的,因此常规的异常处理中间件或 UseExceptionHandler 无法捕获和修改这些特定的错误响应。...下面以 JWT 认证为例说明如何自定义 401 和 403 的响应: 配置 JWT 认证以自定义 401 和 403 响应 在 services.AddAuthentication().AddJwtBearer...; } } 最后在接口签名里指定使用的 ModelBinder [HttpGet("{ids}")] public async TaskIActionResult> GetCompanyCollection...[HttpGet("({ids})")] public async TaskIActionResult> GetCompanyCollection( 小结 不知道说啥,现在很少写 C#了,最近.Net9

    5810
    领券