web-dev-qa-db-fra.com

Renvoyer du HTML à partir de l'API Web ASP.NET

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);
    }
 }
104
Andrus

Renvoyer une chaîne HTML

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;
}

ASP.NET Core

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 .

219
Andrei

À 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>"
    };
}
48
KTCO