ASP.NET MVC:如何向IE以外的所有浏览器发送"text/xml"?

Joh*_*zen 8 asp.net-mvc xhtml svg content-type http

我需要能够将内容类型"text/xml"发送到Firefox和Safari,以允许它们在我的一个页面中呈现内联SVG.

只要内容类型是"text/xml",这就有效.

但是,当IE点击页面时,如果内容类型不是"text/html",它会尝试呈现XML文档树,而不是页面的XHTML内容.

ASP.NET MVC中设置所有视图的HTTP Content-Type的"正确方法"是什么?

请记住,我将把视图渲染为ViewResults.

好的,要清除任何混淆:

User Agent    Content-Type Desired
-----------------------------------
IE 5.5        text/html
IE 6          text/html
IE 7          text/html
IE 8          text/html
Firefox       text/xml
Safari        text/xml
Chrome        text/xml
Run Code Online (Sandbox Code Playgroud)

等等.

列出的所有浏览器都以某种方式支持SVG内联.我有一致的传递格式,保存内容类型.

swi*_*ams 5

可以查看属性Request.Browser并以这种方式嗅出IE,并以这种方式返回正确的视图,尽管这很容易出问题.这不是最佳选择,因为IE 可能会在将来支持它.

public ActionResult MyAction() {
  if (this.Request.Browser.Browser == "IE") {
    return View("NonSVG");
  } else {
    return View("SVG");
  }
}
Run Code Online (Sandbox Code Playgroud)

值得关注的东西可能是Codeplex上的这个页面.它们定义了一个Browser被调用的属性AcceptsImageSVG,但它看起来像是面向移动浏览器,不知道它是否可以在你的情况下使用.


Dan*_*fer 2

根据 W3,您应该使用application/xhtml+xml而不是text/xml表示 XHTML:

http://www.w3.org/TR/2002/NOTE-xhtml-media-types-20020801/#text-xml

上面的文章还指出text/html应该用于 XHTML 内容。