簡體   English   中英

如何使用IHttpActionResult接口從WebApi 2操作返回html文檔?

[英]How to return an html document from WebApi 2 action using IHttpActionResult interface?

我需要構建一個html文檔並將其返回到我的Web API中。 網絡和論壇上的所有可用答案均建議使用HttpResponseMessage。 我想通過IHttpActionResult實現。 以下是我到目前為止的內容:

    [ResponseType(typeof(HttpResponseMessage))]
    public async Task<IHttpActionResult> GetNotesViewModels()
    {
        var note = await GetHtmlText();
        var response = new HttpResponseMessage();
        response.Content = new StringContent(note);
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");

        return Ok(ResponseMessage(response));
    }

我沒有收到想要的東西。 這里缺少什么?

您可以實現自己的HtmlResult,如下所示(徒手):

public class HtmlActionResult : IHttpActionResult
{
    public HtmlActionResult (HttpRequestMessage request, string content)
    {
        Request = request;
        Content= content;
    }

    public string Content { get; private set; }
    public HttpRequestMessage Request { get; private set; }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        return Task.FromResult(ExecuteResult());
    }

    public HttpResponseMessage ExecuteResult()
    {
        var response = new HttpResponseMessage();

        if (!string.IsNullOrWhiteSpace(Content))
            response.Content = new StringContent(Content, Encoding.UTF8, "text/html");

        response.RequestMessage = Request;
        return response;
    }
}

並像這樣使用它:

   public async Task<IHttpActionResult> GetNotesViewModels()
    {
        var note = await GetHtmlText();
        return new HtmlActionResult(Request, note);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM