2 Stimmen

CSS-Datei wird nur im IE geladen, wenn sie über einen ASP.NET MVC-Controler + Action abgerufen wird

Ich bin bis eine Website CSS-Inhalt über eine ASP.NET MVC-Controller + Aktion dienen. Die CSS-"Datei" scheint korrekt über den Draht zu liefern, aber nur IE wird es anwenden. Andere Browser (Firefox, Opera, Chrome) ignorieren die CSS-Datei und stellen die Seite ohne Styling dar. IE8 funktioniert perfekt.

Dies ist der wesentliche Code, den ich verwende, um das CSS über den Controller und die Aktion zurückzugeben:

public void CSS(string version)
{
  string cssFile = Server.MapPath("/site.css");
  string cssContents = System.IO.File.ReadAllText(cssFile);
  Response.Write(cssContents);
}

Beachten Sie, dass die Version eine beliebige Zeichenkette sein kann. Ich habe es mit Zeichenfolgen wie "myversion.css", "1.css", "1234", "arbitrary" usw. versucht.

Sie funktionieren alle im IE8, aber in keinem anderen Browser. Irgendwelche Ideen?

4voto

Pekka Punkte 429407

Sie müssen die entsprechenden Content-type: text/css Kopfzeile.

Andernfalls ignoriert Firefox das Stylesheet und gibt eine Warnung in seiner Fehlerkonsole aus. Dasselbe gilt wahrscheinlich auch für die anderen Gecko/Webkit-basierten Browser.

2voto

Guy Punkte 62474

Dies war einer der Fälle, in denen mir die Antwort erst einfiel, nachdem ich die Frage abgetippt und darüber nachgedacht hatte, wie ich sie formulieren sollte, und sie dann veröffentlichte. Als ich hierher zurückkehrte, hatte Pekka die Frage richtig beantwortet. Falls es jemanden interessiert, hier ist ein Code, der das Problem behebt:

string fileLocation = Request.PhysicalApplicationPath + @"site.css";
ContentResult fcr = new ContentResult();
fcr.Content = System.IO.File.ReadAllText(fileLocation);
fcr.ContentType = "text/css";
return fcr;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X