图片未显示主题布局(Orchard CMS)

weg*_*rer 8 asp.net asp.net-mvc image theming orchardcms

我正在尝试为Orchard CMS创建主题.我的模板不是为它制作的,所以我在Layout.cshtml中显示图像有些麻烦.

这是我的Web服务器上的当前文件夹结构(仅限主题文件夹结构):

主题/内容/图像/ Image.jpg主题/视图/ Layout.cshtml主题/样式/ 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中的图像,而是显示来自其他位置的图像.如果有人知道该位置是什么或如何覆盖它,我将非常感激.

Tia*_*ago 25

我可能会有点迟到,但这可能对其他人有所帮助.

要获取当前主题然后构建动态路径(而不是绝对路径),请使用以下命令:

WorkContext.CurrentTheme:获取当前工作主题ExtensionDescriptor.

然后将其提供给Html.ThemePath URL构建器:Ex.

Html.ThemePath(WorkContext.CurrentTheme, "/Content/Images/SomeImage.png")
Run Code Online (Sandbox Code Playgroud)

玩得开心!

最好的问候,蒂亚戈.


Pio*_*myd 11

在Layout.cshtml中添加图像时,您应该使用主题的完整路径(例如/Themes/My.Theme/Content/Images/MyImage.jpg).请记住,您在[img]标记中提供的路径是相对于浏览器中的URL而不是服务器上的路径.在MVC中,这些几乎永远不会相等.

Layout.cshtml视图文件作为每个请求的一部分加载,因此放在内部的相对路径几乎总是会中断.

想象一下,您有两个Orchard页面:site.com/mypagesite.com/something/mypage.Layout.cshtml在两者中呈现.当您访问第二个URL时,为第一个工作的相对URL肯定会中断.

通过指定/ Themes/YourTheme/Styles文件夹中的物理文件的绝对路径(默认)来直接加载CSS样式表,因此在这种情况下,相对URL将起作用.

HTH

  • 忘了列出来:) Bertrand Le Roy's - http://weblogs.asp.net/bleroy/,mine - http://www.szmyd.com.pl,Nick Mayne's - http://www.themayneissue.com/ HTH (2认同)

Ale*_*ner 6

Thx Tiago为您的解决方案.我认为这实际上是正确的解决方案,而不是链接我认为需要Orchard站点位于域的根目录的完整路径.

原始问题的完整图像参考如下所示:

<img src="@Url.Content(Html.ThemePath(WorkContext.CurrentTheme, "/Content/Images/bgBig.jpg"))" alt="Big background image" />
Run Code Online (Sandbox Code Playgroud)