我成功地将Umbraco从4.0.3升级到4.11.10。我在旧版本中有100个xslt文件,在umbracoSettings.config文件中我使用了“UseLegacyXmlSchema”为真。除非我在下面写了一个简单的剃刀宏并注意到@ photo.umbracoFile总是为空或空,否则每件事都有效。我发现这篇文章http://allan-laustsen.blogspot.co.uk/2012/04/umbraco-razor-dynamicmedia-umbracofile.html,但解决方案有点令人困惑。我想知道是否有人可以为此提供帮助?
@using umbraco.MacroEngines
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
//Check the currentpage has a value in the property 'photos'
if (Model.HasValue("sliderImages"))
{
var MediaFolder = Library.MediaById(Model.sliderImages);
<ul>
@foreach (var photo in MediaFolder.Children)
{
<li >
<img src="@photo.umbracoFile" alt="@photo.Name" />
</li>
}
</ul>
}
}
答案 0 :(得分:1)
我知道这已经过时了,但是由于我刚刚遇到了这个问题,我认为我还要重新发布媒体节点,我发现唯一可以解决的问题是排序和保存给定的父节点,重新发布整个站点似乎只重新发布内容节点。我按字母顺序排序遇到此问题的文件的父媒体目录,然后保存新订单 - 这允许再次在razor中引用.umbracoFile(即受影响文件上的属性不再为空,而是包含路径为预期)。
在我的情况下,<UseLegacyXmlSchema>
已设置为false,重建索引也不起作用。
答案 1 :(得分:0)
直到版本4.7(我认为),Media
项的每次呈现都会调用数据库。该模型更改为将所有媒体索引到内容节点的方式与Lucene索引很相似,然后每次渲染图像只是调用索引。这当然使它快得多。
在升级过程中,媒体文件可能未编入索引。内容已经被编入索引,因此这不会成为问题。因此,解决方案只是重新发布整个网站。这将确保内容引用的任何图像都被编入索引。