Comment renvoyer du HTML à partir du contrôleur API Web ASP.NET MVC?
J'ai essayé le code ci-dessous, mais j'ai une erreur de compilation car Response.Write n'est pas défini:
public class MyController : ApiController
{
[HttpPost]
public HttpResponseMessage Post()
{
Response.Write("<p>Test</p>");
return Request.CreateResponse(HttpStatusCode.OK);
}
}
Renvoie le contenu d'une chaîne avec le type de média 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;
}
Le moyen le plus simple serait d'utiliser le filtre "Produit":
[Produces("text/html")]
public string Get()
{
return "<html><body>Hello World</body></html>";
}
Plus d'infos sur l'attribut [Produces]
peuvent être trouvés ici .
À partir de AspNetCore 2.0, il est recommandé d'utiliser ContentResult
au lieu de l'attribut Produce
dans ce cas. Voir: https://github.com/aspnet/Mvc/issues/6657#issuecomment-322586885
Cela ne repose ni sur la sérialisation ni sur la négociation de contenu.
[HttpGet]
public ContentResult Index() {
return new ContentResult {
ContentType = "text/html",
StatusCode = (int)HttpStatusCode.OK,
Content = "<html><body>Hello World</body></html>"
};
}