圖片未從主題佈局中顯示(Orchard CMS)
我正在嘗試為 Orchard CMS 創建主題。我的模板不是為它製作的,所以我在顯示來自 Layout.cshtml 的圖像時遇到了一些麻煩。
這是我的 Web 伺服器上的目前文件夾結構(僅限主題文件夾結構):
Theme/Content/Images/Image.jpg Theme/Views/Layout.cshtml Theme/Styles/Site.css
以下行不顯示圖像(位於 Layout.cshtml 中):
<img src="../Content/Images/bgBig.jpg" alt="Big background image" />但是,此行確實顯示了圖像(位於 Site.css 中):
background-image:url('../Content/Images/bgLines.png');我認為問題在於 Layout.cshtml 不顯示來自 Theme/Views/Layout.cshtml 的圖像,而是來自其他位置的圖像。如果有人知道該位置是什麼或如何覆蓋它,我將不勝感激。
在 Layout.cshtml 中添加圖像時,您應該使用主題的完整路徑(例如*/Themes/My.Theme/Content/Images/MyImage.jpg*)。請記住,您提供的路徑
$$ img $$標籤相對於瀏覽器中的 URL,而不是伺服器上的路徑。在 MVC 中,這些幾乎永遠不會相等。 Layout.cshtml 視圖文件作為每個請求的一部分載入,因此放置在其中的相對路徑幾乎總是會中斷。
假設您有兩個 Orchard 頁面:site.com/mypage和site.com/something/mypage。Layout.cshtml 在它們中都被渲染。當您訪問第二個時,適用於第一個的相對 URL 肯定會中斷。
CSS 樣式表通過指定/Themes/YourTheme/Styles 文件夾中的物理文件的絕對路徑直接載入(預設),因此在這種情況下,相對 URL 將起作用。
高溫高壓
我可能有點晚了,但這可能對其他人有幫助。
要獲取目前主題然後建構動態路徑(而不是絕對路徑),請使用以下命令:
WorkContext.CurrentTheme:獲取目前工作主題 ExtensionDescriptor。然後將其提供給 Html.ThemePath URL 建構器:例如。
Html.ThemePath(WorkContext.CurrentTheme, "/Content/Images/SomeImage.png")玩得開心!
最好的問候,蒂亞戈。