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);
}
}
답변
ASP.NET Core. 접근 방식 1
컨트롤러가 확장 ControllerBase
되거나 방법 Controller
을 사용할 수있는 경우 Content(...)
:
[HttpGet]
public ContentResult Index()
{
return base.Content("<div>Hello</div>", "text/html");
}
ASP.NET Core. 접근법 2
Controller
클래스에서 확장하지 않기로 선택한 경우 다음을 새로 만들 수 있습니다 ContentResult
.
[HttpGet]
public ContentResult Index()
{
return new ContentResult
{
ContentType = "text/html",
Content = "<div>Hello World</div>"
};
}
레거시 ASP.NET MVC 웹 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
. 참조 : 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>"
};
}