1. ホーム
  2. asp.net

[解決済み] ApiControllerで生の文字列を返すには?

2022-06-04 17:45:15

質問

XML/JSONを提供するApiControllerを持っていますが、アクションの1つが純粋なHTMLを返すようにしたいのですが、どうすればいいですか?私は以下を試しましたが、それはまだXML/JSONを返します。

public string Get()
{
    return "<strong>test</strong>";
}

上記が返すものです。

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">&lt;strong&gt;test&lt;/strong&gt;</string>

周囲のXMLタグも含まず、純粋にエスケープされていないテキストだけを返す方法はありますか(たぶん、action属性の異なる戻り値タイプ)?

どのように解決するのですか?

Web Api のアクションに HttpResponseMessage を返すようにすることもできます。あなたの場合、StringContentを使用して、正しいコンテンツタイプを指定するかもしれません。

public HttpResponseMessage Get()
{
    return new HttpResponseMessage()
    {
        Content = new StringContent(
            "<strong>test</strong>", 
            Encoding.UTF8, 
            "text/html"
        )
    };
}

または

public IHttpActionResult Get()
{
    return base.ResponseMessage(new HttpResponseMessage()
    {
        Content = new StringContent(
            "<strong>test</strong>", 
            Encoding.UTF8, 
            "text/html"
        )
    });
}