我需要能够将内容类型“text/xml”发送到 Firefox 和 Safari,以允许它们在我的一个页面中呈现内联 SVG。
这有效,只要内容类型是“text/xml”。
但是,当 IE 访问页面时,如果内容类型不是“text/html”,它会尝试呈现 XML 文档树,而不是页面的 XHTML 内容。
在 ASP.NET MVC 中设置我所有 View 的 HTTP 内容类型的“正确方法”是什么?
请记住,我将把 View 呈现为 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
等等。
列出的所有浏览器都以某种方式支持内联 SVG。我有一个一致的交付格式,保存内容类型。
最佳答案
您可以查看 Request.Browser
中的属性并以这种方式嗅出 IE,并以这种方式返回正确的 View ,尽管这很容易出现问题。这不是最佳选择,因为 IE 可能将来会支持它。
public ActionResult MyAction() {
if (this.Request.Browser.Browser == "IE") {
return View("NonSVG");
} else {
return View("SVG");
}
}
值得深入研究的可能是这个 page on Codeplex .他们在 Browser
上定义了一个名为 AcceptsImageSVG
的属性,但它看起来像是面向移动浏览器的,不知道它是否可以用于您的情况。
关于asp.net-mvc - ASP.NET MVC : How do I send "text/xml" to all browsers but IE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1359266/