Asp.net-Mvc

ASP.NET MVC:如何將“text/xml”發送到除 IE 之外的所有瀏覽器?

  • January 26, 2011

我需要能夠將內容類型“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

等等。

列出的所有瀏覽器都以某種方式支持 SVG 內聯。我有一致的傳遞格式,保存內容類型。

根據 W3,您應該使用application/xhtml+xml而不是text/xml表示 XHTML:

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

上面的文章還指出text/html應該用於 XHTML 內容。

可以以這種方式查看 IE中的屬性Request.Browser並嗅出 IE,然後以這種方式返回正確的視圖,儘管這很容易出現問題。這不是最優的,因為 IE將來可能會支持它。

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

值得進一步研究的可能是Codeplex 上的這個頁面Browser他們在called上定義了一個屬性AcceptsImageSVG,但它看起來像是面向移動瀏覽器的,不知道它是否可以在您的情況下使用。

引用自:https://stackoverflow.com/questions/1359266