Ich versuche ein Thema für Orchard CMS zu erstellen. Die Vorlage, die ich habe, wurde nicht dafür gemacht, deshalb habe ich Probleme, Bilder von Layout.cshtml anzuzeigen.
Dies ist die aktuelle Ordnerstruktur auf meinem Webserver (nur Theme-Ordner-Struktur):
Thema / Inhalt / Bilder / Bild.jpg Thema / Ansichten / Layout.cshtml Thema / Stile / Site.css
Die folgende Zeile zeigt kein Bild (in Layout.cshtml):
<img src="../Content/Images/bgBig.jpg" alt="Big background image" />
In dieser Zeile wird jedoch das Bild (in Site.css) angezeigt:
background-image:url('../Content/Images/bgLines.png');
Ich glaube, das Problem besteht darin, dass Layout.cshtml das Bild nicht aus Theme / Views / Layout.cshtml, sondern von dem anderen Ort anzeigt. Wenn jemand weiß, was dieser Ort wäre oder wie er überschrieben werden könnte, wäre ich dankbar.
Wenn Sie Bilder in Layout.cshtml hinzufügen, sollten Sie den vollständigen Pfad zu Ihrem Thema verwenden (zB /Themes/My.Theme/Content/Images/MyImage.jpg ). Beachten Sie, dass die Pfade, die Sie im Tag [img] angeben, relativ zur URL im Browser sind und nicht der Pfad auf dem Server. In MVC sind diese fast nie gleich.
Die Layout.cshtml-Ansichtsdatei wird als Teil jeder einzelnen Anfrage geladen, so dass die relativen Pfade, die Sie einfügen, fast immer unterbrochen werden.
Stellen Sie sich vor, Sie haben zwei Orchard-Seiten: site.com/mypage und site.com/something/mypage . Layout.cshtml wird in beiden gerendert. Relative URLs, die für den ersten funktionieren, werden mit dem Zugriff auf den zweiten wahrscheinlich unterbrochen.
CSS-Stylesheets werden direkt geladen, indem der absolute Pfad zu den physischen Dateien im Ordner / Themes / YourTheme / Styles (Standard) angegeben wird. In diesem Fall funktionieren die relativen URLs.
HTH
Ich könnte etwas spät dran sein, aber das könnte anderen helfen.
Um das aktuelle Thema zu erhalten und dann einen dynamischen Pfad (im Gegensatz zu einem absoluten Pfad) zu erstellen, verwenden Sie Folgendes:
WorkContext.CurrentTheme
: Ruft das aktuelle Arbeitsthema ExtensionDescriptor ab.
Geben Sie es dann dem Html.ThemePath URL-Builder: Ex.
%Vor%Viel Spaß!
Mit freundlichen Grüßen, Tiago.
Thx Tiago für Ihre Lösung. Ich denke, dies ist in der Tat die richtige Lösung, im Gegensatz zur Verknüpfung des vollständigen Pfades, von dem ich denke, dass die Orchard-Site an der Wurzel der Domäne sein müsste.
Die vollständige Bildreferenz der ursprünglichen Frage würde wie folgt aussehen:
%Vor% Ich bin überrascht, dass niemand erwähnt hat, dass Sie das folgende web.config
in dem Ordner benötigen, in dem sich Ihre Bilder / Scripts / Styles befinden ( siehe die Obstbaum-Dokumente )
Darüber hinaus ist dies die zuverlässigste Art, ein Bild zu lokalisieren, wie andere bereits festgestellt haben:
%Vor%Wenn Sie die Quelle untersuchen, sollte sie Ihnen zeigen, wo sie versucht, das Bild zu finden und zu scheitern. Es ist höchstwahrscheinlich der relative Pfad, mit dem es Probleme hat, versuchen Sie einen absoluten Pfad in der CSS, um zu sehen, ob das das Problem ist. ohne die tatsächliche Website, kann ich nicht sicher wissen.
Tags und Links asp.net-mvc asp.net image orchardcms theming