ASP.NET MVC Web APIコントローラーからHTMLを返す方法は?
以下のコードを試しましたが、Response.Writeが定義されていないため、コンパイルエラーが発生しました。
public class MyController : ApiController
{
[HttpPost]
public HttpResponseMessage Post()
{
Response.Write("<p>Test</p>");
return Request.CreateResponse(HttpStatusCode.OK);
}
}
メディアタイプtext/html
の文字列コンテンツを返します。
public HttpResponseMessage Get()
{
var response = new HttpResponseMessage();
response.Content = new StringContent("<html><body>Hello World</body></html>");
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
}
最も簡単な方法は、「生成」フィルターを使用することです。
[Produces("text/html")]
public string Get()
{
return "<html><body>Hello World</body></html>";
}
[Produces]
属性の詳細については、 こちら をご覧ください。
AspNetCore 2.0以降では、この場合、ContentResult
属性の代わりにProduce
を使用することをお勧めします。参照: https://github.com/aspnet/Mvc/issues/6657#issuecomment-322586885
これは、シリアル化にもコンテンツネゴシエーションにも依存しません。
[HttpGet]
public ContentResult Index() {
return new ContentResult {
ContentType = "text/html",
StatusCode = (int)HttpStatusCode.OK,
Content = "<html><body>Hello World</body></html>"
};
}