web-dev-qa-db-ja.com

ASP.NET MVCおよびtext / xmlコンテンツタイプ

アクションからView()を返したいのですが、結果の応答のコンテンツタイプは、デフォルトのtext/htmlではなくtext/xmlになるはずです。

私は以下を試しましたが、成功しませんでした:

_Response.ContentType = "text/xml"; 
return View();
_

ContentResultを返すことでコンテンツタイプを指定できることは知っていますが、それではビューがレンダリングされません。

ビューを文字列にレンダリングしてからreturn Content()を使用する必要がないことを望んでいるため、簡単な方法を見落としている可能性があります。

39
andreialecu
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" 
    ContentType="text/xml" %>
55
eu-ge-ne

文字列をレンダリングする必要があります。 text/xmlを返すには、次のようにします。

return new ContentResult {
    ContentType = "text/xml",
    Content = UTF8.GetString(yourXmlString),
    ContentEncoding = System.Text.Encoding.UTF8
}; 
41
Alex

ユーザーコントロール(ASCX)はContentType = "text/xml"を受け入れません。

解決:

public ActionResult xxx()
  {
     Response.ContentType = "text/xml";
     return View("xxx.ascx");
  }
7
jmav

物事を上書きせず、独自のコンテキストタイプを含むHTMLを生成するビューが必要です。

カスタムビューは、Response.Writeに直接レンダリングできます(必要なものと非常に似ているクラスについては、Reflectorの JsonResult を参照してください)。

中間文字列なしでXMLをレンダリングするには、XMLをResponse.Output上に作成されたXmlWriterに保存します。

1
Richard

Razor(.cshtml)ビューを探している場合は、コンテンツタイプビューコード内を設定します。

@{
    Response.ContentType = "text/xml";
}
1
Alex

分離コードページでビューの事前レンダリングメソッドからresponse.contentを設定してみましたか?これは明らかに、webformビューエンジンを使用していることを前提としています。

0
Joel Martinez