2009-06-10 6 views
0

Wenn ich meine MVC-Anwendung über Visual Studio 2008 ausführen, wird die Website in Bezug auf das Styling gut aussieht, Bilder usw.ASP .NET MVC in VS2008 - veröffentlicht Build erscheint anders

Aber wenn ich veröffentliche diese Build ein Ordner und verwenden Sie IIS, um es anzuzeigen, das Styling ist überall und Bilder sind nicht richtig.

Anfangs dachte ich, das wäre ein Fehler in Bezug auf das Stylesheet, aber ich benutze nur eine leicht modifizierte Version des Stylesheets, das mit der MVC-Vorlage out-of-the-box kam.

Mache ich etwas falsch in Bezug auf die Veröffentlichung der Website oder mit dem CSS-Blatt?

Mit freundlichen Grüßen,

Brett

+0

Verwenden Sie absolute oder relative URLs in Ihrem Stylesheet? –

Antwort

0

Das war völlig meine Schuld!

Ich habe Tags auf meiner Seite verwendet, um tabellarische Daten anzuzeigen - dies lief zwar gut, wenn ich das Projekt innerhalb von Visual Studio ausführte, aber als ich die Site veröffentlichte, erschien das CSS auf der Seite verzerrt auf der Seite im Internet Explorer 7 und 8.

Allerdings, wenn ich das gleiche veröffentlichte Build in Firefox 3 sah, schien die Website korrekt auf der Seite zu rendern ...! Seltsam, ich weiß.

Ich habe versucht, das CSS zu korrigieren, um die Teile zu korrigieren, die nicht korrekt in Internet Explorer gerendert wurden, aber die Tags aufgrund der Zeit vollständig entfernt und die Tags stattdessen zu meinem Schrecken gebracht!

3

Die wahrscheinlichste Ursache ist, dass Ihre Wege in die Wurzel der Site relativ sind und Sie veröffentlichen in einem Ordner, der nicht an der Wurzel ist. Sie sollten Ihre URLs in Ihrem CSS ändern, um sie relativ zur CSS-Datei zu machen, und in Ihrer Marke, Url.Content zu verwenden, damit die URLs dynamisch übersetzt werden.

<img src='<%= Url.Content("~/Content/images/image.png") %>' alt="" /> 
1

Ich hatte fast genau das gleiche Problem, erinnerte mich dann an meine URLs. Wenn Sie die Quelle in Ihrer IIS-Version anzeigen, sollten Sie sehen können, dass die URLs beim Zeigen auf die CSS-Dateien usw. falsch sind.

Ich ersetzte alle CSS- und JS-Aufrufe in meinem Master mit dem Helfer Methoden, zB:

<%= Html.RegisterCSS("site.css") %> 
<%= Html.RegisterScript("jquery-1.3.2.min.js") %> 

Hope this ...


bearbeiten hilft: Ahh, yep, die ich angelegt habe einen Helfer zu "helfen" mich aus. Also habe ich den folgenden Code in einem Helfer.

public static string RegisterScript(this System.Web.Mvc.HtmlHelper helper, string scriptFileName) 
    { 
     string scriptRoot = VirtualPathUtility.ToAbsolute("~/Scripts"); 
     string scriptFormat = "<script src=\"{0}/{1}\" type=\"text/javascript\"></script>\r\n"; 
     return string.Format(scriptFormat, scriptRoot, scriptFileName); 
    } 
    public static string RegisterCSS(this System.Web.Mvc.HtmlHelper helper, string FileName) 
    { 
     //get the directory where the scripts are 
     string Root = VirtualPathUtility.ToAbsolute("~/Content"); 
     string Format = "<link href=\"{0}/{1}?{2}\" rel=\"stylesheet\" type=\"text/css\" />"; 
     return string.Format(Format, Root, FileName, DateTime.Now.ToString("hhmmss")); 
    } 

Und ich hatte eine "Gotcha", wo IE8 im IE7-Modus angezeigt wurde. Dies verursachte mir Kopfschmerzen, bis ein Kollege darauf hinwies ... Ich habe IE8 nicht hier, aber ich denke, es ist in der Entwickler-Tools-Sektion.

+0

Es ist nicht, dass die CSS-Datei nicht abgeholt wird - es ist ... aber einige der Elemente verhalten sich anders beim Ausführen von IIS ... Auch habe ich versucht, die Html.RegisterCSS-Zeile, wie Sie oben erwähnt, aber es gibt keinen Hinweis darauf. Ich habe versucht, es zu googeln, aber nichts Produktives kam zurück. –

+0

Ok - das macht alles ein bisschen mehr Sinn - aber wo speichern Sie die Hilfsfunktionen, die Sie erstellt haben? Im Code-Behind für diese Seite oder im Controller für diese Seite? –

+0

Ich habe eine Datei in meinem Helfer-Ordner erstellt, wo ich alle diese Arten von Ansichtserweiterungen sammle ... Auf diese Weise kann ich sie wiederverwenden. Ich schreibe gerade (zufällig) einen Helfer, um mir eine Funktion wie die "date_select" mit Rails zu geben ... (keuch!) /Helpers/ViewExtensions.cs – boymc

Verwandte Themen