Asp.net-Mvc
ASP.NET MVC:如何將“text/xml”發送到除 IE 之外的所有瀏覽器?
我需要能夠將內容類型“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,但它看起來像是面向移動瀏覽器的,不知道它是否可以在您的情況下使用。