ContentResult是 ASP.NET Core 中一个非常重要且经典的返回类型。
在 ASP.NET Core 的底层机制中,我们之前提到的Ok()、NotFound()等方法,其实都是返回了不同的IActionResult实现类,而ContentResult正是其中专门用于返回纯文本内容的实现类。
1. ContentResult 是什么?
ContentResult继承自ActionResult。它的作用非常明确:将指定的字符串内容写入 HTTP 响应体,并可以自定义 MIME 类型(Content-Type)和字符编码(Encoding)。
它通常用来返回纯文本、XML、HTML 片段或者自定义格式的数据,而不是默认的 JSON。
2. 如何使用 ContentResult?
方式一:直接返回实例(最原始的方式)
你可以直接new一个ContentResult对象并返回:
[HttpGet("text")]publicIActionResultGetPlainText(){returnnewContentResult{Content="这是一段纯文本",ContentType="text/plain",StatusCode=200};}方式二:使用内置的Content()辅助方法(推荐)
在ControllerBase中,微软提供了Content()这个快捷方法,它底层其实就是帮你实例化了一个ContentResult:
[HttpGet("xml")]publicIActionResultGetXml(){stringxmlData="<user><name>张三</name></user>";// 返回 XML 格式内容returnContent(xmlData,"application/xml");}3. ContentResult 的核心属性
- Content:要返回的字符串内容。
- ContentType:MIME 类型(如
text/plain、text/html、application/xml)。如果不指定,默认通常是text/plain。 - StatusCode:HTTP 状态码(默认是 200)。
4. 它在现代开发中的定位
随着 RESTful API 的普及,前后端分离架构基本都使用 JSON 进行通信。因此,ContentResult在现代 Web API 中的出场率不如JsonResult(即Ok()返回的 JSON)高。
它的主要应用场景变成了:
- 返回纯文本(如健康检查接口返回
OK)。 - 返回 XML 格式的数据。
- 返回一段动态生成的 HTML 片段。
- 对接一些老旧的、非 JSON 格式的第三方系统。