Return HTML from ASP.NET Web API

前端 未结 2 846
孤街浪徒
孤街浪徒 2020-11-30 19:24

How to return HTML from ASP.NET MVC Web API controller?

I tried the code below but got compile error since Response.Write is not defined:

public clas         


        
相关标签:
2条回答
  • 2020-11-30 19:30

    ASP.NET Core. Approach 1

    If your Controller extends ControllerBase or Controller you can use Content(...) method:

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

    ASP.NET Core. Approach 2

    If you choose not to extend from Controller classes, you can create new ContentResult:

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

    Legacy ASP.NET MVC Web API

    Return string content with media type 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;
    }
    
    0 讨论(0)
  • 2020-11-30 19:46

    Starting with AspNetCore 2.0, it's recommended to use ContentResult instead of the Produce attribute in this case. See: https://github.com/aspnet/Mvc/issues/6657#issuecomment-322586885

    This doesn't rely on serialization nor on content negotiation.

    [HttpGet]
    public ContentResult Index() {
        return new ContentResult {
            ContentType = "text/html",
            StatusCode = (int)HttpStatusCode.OK,
            Content = "<html><body>Hello World</body></html>"
        };
    }
    
    0 讨论(0)
提交回复
热议问题