我想从一个动作返回一个View(),结果响应应该有一个text / xml的内容类型,而不是默认的text / html。
我尝试过以下操作,但没有成功:
Response.ContentType = "text/xml";
return View();
我知道您可以通过返回ContentResult
来指定内容类型,但这不会呈现我的视图。
我希望我不需要将视图呈现为字符串然后使用return Content()
,所以我可能会忽略一些简单的方法。
答案 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";
}