当前位置: 首页 > news >正文

Asp.net core ActionResult继承类

在 ASP.NET Core 中,ActionResult是一个抽象基类,框架提供了大量继承自它的具体返回类型。为了方便记忆和查阅,以下按功能维度对所有常见的ActionResult派生类进行归纳总结:

1. 数据与内容响应类

用于向客户端返回具体的数据载荷或原始文本。

返回类型便捷方法核心作用典型场景
OkObjectResultOk(obj)返回 200 OK + JSON 序列化对象查询成功、列表获取
OkResultOk()仅返回 200 OK,无响应体操作成功但无需返回数据
JsonResultJson(obj)强制 JSON 序列化,忽略内容协商需要绕过 Accept 头强制返回 JSON
ContentResultContent(str, type)原样输出字符串,指定 ContentType返回 XML、HTML、纯文本、CSV
ObjectResultStatusCode(code, obj)自定义状态码 + 对象序列化非标准状态码(如 418、429)带响应体

2. 资源创建与异步任务类

遵循 RESTful 规范,用于 POST 创建资源和异步处理反馈。

返回类型便捷方法HTTP 状态码核心作用
CreatedResultCreated(uri, obj)201手动指定新资源的 Location URL
CreatedAtActionResultCreatedAtAction(action, route, obj)201根据 Action 名自动生成 Location(最常用)
CreatedAtRouteResultCreatedAtRoute(routeName, route, obj)201根据路由名称生成 Location
AcceptedResultAccepted(obj)202请求已接收,异步处理中
AcceptedAtActionResultAcceptedAtAction(action, route, obj)202异步处理中,附带状态查询地址

3. 客户端错误类

用于精确表达不同类型的客户端请求问题。

返回类型便捷方法HTTP 状态码语义区分
BadRequestObjectResultBadRequest(obj)400请求语法/参数格式错误
UnauthorizedResultUnauthorized()401未提供认证信息或凭据无效
ForbidResultForbid()403已认证但权限不足
NotFoundObjectResultNotFound(obj)404请求的资源不存在
ConflictObjectResultConflict(obj)409资源状态冲突(如重复提交、并发修改)
UnprocessableEntityObjectResultUnprocessableEntity(obj)422语法正确但业务语义校验失败(模型验证)

⚠️关键区分:400 是"你说错了"(格式问题),422 是"你说的对但办不到"(业务规则问题)。

4. 无内容响应类

返回类型便捷方法HTTP 状态码典型场景
NoContentResultNoContent()204PUT 更新成功、DELETE 删除成功

5. 文件下载类(FileResult 子类)

返回类型便捷方法数据来源适用场景
FileContentResultFile(byte[], type, name)内存字节数组动态生成的小文件(验证码图片、导出 Excel)
FileStreamResultFile(stream, type, name)Stream 流大文件下载、OSS/云存储代理转发
PhysicalFileResultPhysicalFile(path, type, name)服务器物理路径静态文件直接返回(需做路径安全校验)
VirtualFileResultFile(virtualPath, type)wwwroot 虚拟路径应用内静态资源返回

6. 重定向类

返回类型便捷方法HTTP 状态码安全特性
RedirectResultRedirect(url)/RedirectPermanent(url)302 / 301支持外部 URL,需注意开放重定向风险
RedirectToActionResultRedirectToAction(action, controller)302基于 Action 名称,编译时安全
RedirectToRouteResultRedirectToRoute(routeName, values)302基于路由模板,解耦控制器依赖
LocalRedirectResultLocalRedirect(url)302仅允许本地 URL,自动防御开放重定向攻击

7. 视图渲染类(传统 MVC)

返回类型便捷方法用途
ViewResultView(name, model)渲染完整 Razor 页面
PartialViewResultPartialView(name, model)渲染局部视图片段(HTMX/AJAX 局部刷新)

💡 选型速查决策

需要返回什么? │ ├─ JSON 数据 ──────────► OkObjectResult / ActionResult<T> ├─ 原始文本/XML/HTML ──► ContentResult ├─ 创建资源成功 ───────► CreatedAtActionResult (201) ├─ 异步任务受理 ───────► AcceptedAtActionResult (202) ├─ 更新/删除成功 ──────► NoContentResult (204) ├─ 参数格式错误 ───────► BadRequestObjectResult (400) ├─ 业务校验失败 ───────► UnprocessableEntityObjectResult (422) ├─ 文件下载 ───────────► FileStreamResult (大文件) / FileContentResult (小文件) ├─ 页面跳转 ───────────► LocalRedirectResult (安全) / RedirectToActionResult └─ 自定义状态码 ───────► ObjectResult + StatusCode()

以上涵盖了 ASP.NET Core 中所有继承自ActionResult的常见返回类型。实际开发中,建议优先使用ActionResult<T>作为方法签名,内部根据业务分支返回上述具体类型,兼顾类型安全与灵活性。

http://www.cnnetsun.cn/news/3330598.html

相关文章:

  • 2025 Python数据流水线实战:声明式架构与三大调度器协同
  • AI代码理解技术演进:从语义搜索到智能规划的完整解析
  • Agent运行时归零:从事件日志到凭证隔离的工程实践
  • AI记忆革命:突破上下文窗口的局限
  • C++软件下载
  • 微软都不敢自动删除,这款工具让你“看得见”地清理C盘
  • string.gsub
  • Agent Runtime 正在归零:会话即事件日志的工程革命
  • 认知领域的无声渗透:AI时代“精致危害”的生成机制、识别特征与社会防御
  • Visual Assist X 2026.4 配置优化:3个关键设置提升VS2019 C++智能感知速度80%
  • esp32-tcp
  • C语言模拟STL容器:从内存管理到红黑树实现
  • Pandas Styler实战指南:让数据表格自动说话
  • Python高手进阶:内存管理、对象模型与并发安全实战
  • 演唱会视频处理技术:从编码原理到播放优化的完整指南
  • Codex Subagents多Agent并行协作:TOML自定义AI助手实战指南
  • 智慧校园系统|智慧学工一体化管理平台,覆盖学校、教师、学生及家长,让校园学工管理更智能、更高效
  • 布斯(Booth)补码乘法:原理推导与实站案例讲解
  • SAP QM 检验点(Inspection Point) 实战:3步配置与4个事务代码打通采购质检流程
  • CFD液滴破碎模型选择指南:TAB、KHRT、Wave对比与应用
  • 摆脱论文困扰!盘点2026年用户挚爱的的AI论文写作软件
  • IPXWrapper终极指南:5分钟让Windows 10/11完美运行经典联机游戏
  • 为什么区块链可以做到不可篡改?
  • AI工具在自媒体内容创作中的实践指南与落地策略
  • ChatGPT Plus订阅技术指南:API调用优化与成本控制策略
  • IEEE 754 浮点数标准:从二进制表示到精度丢失的 3 个实战案例解析
  • YARA规则集成实战:3步将自定义规则部署到Symantec Endpoint Protection 14.3
  • 短信验证码缓存设计实战:Redis 5分钟过期策略与3次校验限制
  • Linux基础学习(4)
  • SAP CKMLCP 过账清算 7 大常见报错:从权限锁定到凭证行超限的完整解决方案