1

我成功地将 Umbraco 从 4.0.3 升级到 4.11.10。我在旧版本中有 100 个 xslt 文件,在 umbracoSettings.config 文件中,我使用“UseLegacyXmlSchema”是正确的。除了我在下面写了一个简单的 razor 宏并注意到 @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>

      }

}

4

2 回答 2

1

我知道这很旧,但是由于我刚刚遇到了这个确切的问题,所以我想将其添加到重新发布媒体节点,我发现唯一可行的方法是对给定的父节点进行排序并保存,重新发布整个站点似乎只重新发布内容节点。我按字母顺序对遇到此问题的文件的父媒体目录进行排序,然后保存新顺序 - 这允许再次在 razor 中引用 .umbracoFile(即受影响文件上的属性不再为空,而是包含路径为预期的)。

在我的情况下<UseLegacyXmlSchema>已经设置为 false 并且重建索引也不起作用。

于 2014-12-30T19:46:27.297 回答
0

直到 4.7 版(我认为),每个Media项目的渲染都会调用数据库。该模型更改为将所有媒体索引到 Lucene 索引中,这与内容节点的方式非常相似,然后图像的每次渲染都只是调用索引。这当然大大加快了速度。

在升级过程中,媒体文件可能没有被索引。内容已经被编入索引,所以这不是问题。因此,解决方案就是重新发布整个网站。这将确保内容引用的任何图像都被编入索引。

于 2013-07-23T08:03:46.787 回答