ASP.NET MVC: Wie sende ich "text / xml" an alle Browser außer IE?

8

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.

    
John Gietzen 31.08.2009, 20:30
quelle

5 Antworten

2

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.

    
Daniel Schaffer 01.09.2009, 15:50
quelle
5

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.

%Vor%

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.

    
swilliams 31.08.2009 20:53
quelle
2

Sie können den Browsertyp mit dem Request.Browser-Objekt

bestimmen

Siehe 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.

    
TJB 31.08.2009 20:54
quelle
0

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.

    
codingoutloud 30.09.2009 00:30
quelle
0

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.

    
mc10 26.01.2011 05:42
quelle