ASP.NET MVC和text / xml内容类型

时间:2009-06-09 18:44:07

标签: asp.net-mvc xml

我想从一个动作返回一个View(),结果响应应该有一个text / xml的内容类型,而不是默认的text / html。

我尝试过以下操作,但没有成功:

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

我知道您可以通过返回ContentResult来指定内容类型,但这不会呈现我的视图。

我希望我不需要将视图呈现为字符串然后使用return Content(),所以我可能会忽略一些简单的方法。

6 个答案:

答案 0 :(得分:55)

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" 
    ContentType="text/xml" %>

答案 1 :(得分:40)

您需要渲染字符串。要返回text / xml,请执行以下操作:

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

答案 2 :(得分:6)

用户控件(ASCX)不接受ContentType =“text / xml”。

解决方案:

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

答案 3 :(得分:1)

您需要一个不会覆盖事物并生成HTML的视图,包括它自己的上下文类型。

自定义视图可以直接呈现给Response.Write(请参阅Reflector中的JsonResult以获取与您需要的类非常相似的类。)

要在没有中间字符串的情况下呈现XML,请将XML保存到XmlWriter上创建的Response.Output

答案 4 :(得分:0)

您是否尝试在代码隐藏页面中从视图的预呈现方法设置response.content?这显然假设你正在使用webform视图引擎

答案 5 :(得分:0)

如果要查找Razor(.cshtml)视图,请在视图代码中设置内容类型

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