从 ASP.NET Web API 返回 HTML

如何从 ASP.NET MVC Web API 控制器返回 HTML?

我尝试了下面的代码,但是由于响应出现了编译错误,因为没有定义 Write:

public class MyController : ApiController
{
[HttpPost]
public HttpResponseMessage Post()
{
Response.Write("<p>Test</p>");
return Request.CreateResponse(HttpStatusCode.OK);
}
}
157382 次浏览

ASP.NET 核心,方法1

如果您的控制器扩展 ControllerBaseController,您可以使用 Content(...)方法:

[HttpGet]
public ContentResult Index()
{
return base.Content("<div>Hello</div>", "text/html");
}

ASP.NET 核心,方法2

如果选择不从 Controller类进行扩展,可以创建新的 ContentResult:

[HttpGet]
public ContentResult Index()
{
return new ContentResult
{
ContentType = "text/html",
Content = "<div>Hello World</div>"
};
}

遗留 ASP.NET MVC Web API

返回媒体类型为 text/html的字符串内容:

public HttpResponseMessage Get()
{
var response = new HttpResponseMessage();
response.Content = new StringContent("<div>Hello World</div>");
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
}

在本例中,从 AspNetCore 2.0开始,建议使用 ContentResult而不是 Produce属性

这不依赖于序列化,也不依赖于内容协商。

[HttpGet]
public ContentResult Index() {
return new ContentResult {
ContentType = "text/html",
StatusCode = (int)HttpStatusCode.OK,
Content = "<html><body>Hello World</body></html>"
};
}