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/mypage和site.com/something/mypage.Layout.cshtml在两者中呈现.当您访问第二个URL时,为第一个工作的相对URL肯定会中断.
通过指定/ Themes/YourTheme/Styles文件夹中的物理文件的绝对路径(默认)来直接加载CSS样式表,因此在这种情况下,相对URL将起作用.
HTH
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)
归档时间: |
|
查看次数: |
10140 次 |
最近记录: |