Ich muss den Inhaltstyp "text / xml" an Firefox und Safari senden können, damit sie inline SVG auf einer meiner Seiten darstellen können.
Dies funktioniert, solange der Inhaltstyp "text / xml" ist.
Wenn der IE jedoch auf die Seite trifft, versucht der Inhaltstyp nicht "text / html", sondern er rendert den XML-Dokumentbaum und nicht den XHTML-Inhalt der Seite.
Was ist der "richtige Weg" in ASP.NET MVC, um den HTTP-Inhaltstyp ALL meiner Ansichten festzulegen?
Beachten Sie, dass ich die Ansichten als ViewResults rendern werde.
Ok, um Verwirrung zu vermeiden:
%Vor%Und so weiter.
Alle aufgeführten Browser unterstützen SVG auf die eine oder andere Weise. Ich habe ein konsistentes Lieferformat, speichern Sie den Inhaltstyp.
Gemäß W3 sollten Sie application/xhtml+xml
anstelle von text/xml
verwenden, um XHTML zu bezeichnen:
Der obige Artikel stellt auch fest, dass text/html
nicht für XHTML-Inhalte verwendet werden sollte.
Sie könnten die Eigenschaften in Request.Browser
betrachten und den IE auf diese Weise ausspähen und die richtige Ansicht auf diese Weise zurückgeben, obwohl dies für Probleme anfällig ist. Dies ist nicht optimal, da IE es in der Zukunft unterstützen könnte.
Etwas, das einen Blick wert ist, könnte diese Seite auf Codeplex sein. Sie definieren eine Eigenschaft in Browser
namens AcceptsImageSVG
, aber es sieht so aus, als ob sie auf mobile Browser ausgerichtet ist. Sie wissen nicht, ob sie in Ihrer Situation verwendet werden könnte.
Sie können den Browsertyp mit dem Request.Browser-Objekt
bestimmenSiehe dieses Beispiel Ссылка
Sie könnten also etwas tun wie:
%Vor%Oder wenn Sie dies an vielen Stellen verwenden, können Sie eine ViewResult-Factory erstellen, die basierend auf dem Browsertyp das richtige Suchergebnis zurückgibt.
Art von hacky, aber ... Was, wenn das SVG in einem Rahmen war, beworben der Rahmen content-type = text / xml, während die umhüllende Seite advertsized die passendere Anwendung / xhtml + xml. Dies teilt das Problem in zwei (möglicherweise) besser handhabbare.
Ich bin mir nicht sicher, ob das funktioniert, aber Sie könnten versuchen, bedingte Kommentare :
%Vor%Oder, noch besser, verwenden Sie HTML5:
%Vor%Sie müssen nicht einmal den Inhaltstyp angeben.
Tags und Links asp.net-mvc svg http xhtml content-type