在foreach - umbraco中通过id获取媒体项目

时间:2012-04-20 07:38:52

标签: c# asp.net razor media umbraco

正如我在标题中所写,我在foreach中使用Media有问题。

这是我的代码:

@foreach (var item in @Model.Children.Where("Visible").OrderBy("UpdateDate"))
    {
        @{
            var link = new umbraco.cms.businesslogic.media.Media(item.MediaID).Children.FirstOrDefault().getProperty("umbracoFile").Value;
        }
        <div class="galleryListItem" style="background-image: url('/imageGen.ashx?image=@link&width=273&height=161');">
            <a href="@item.Url" class="link"></a>
            <div class="contentGalleryList">
                <div class="highlightGalleryList">@item.Name</div>
            </div>
        </div>
    }

和这一行:

@link = new umbraco.cms.businesslogic.media.Media(item.MediaID).FirstOrDefault().getProperty("umbracoFile").Value;

给我这个错误:

Error loading MacroEngine script (file: GalleryList.cshtml);

我可以做些什么来开始工作?也许这是一个更好的解决这个问题的方法?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

我觉得这样的事情对你有用:(我不是100%肯定你的代码试图做什么,我假设item.MediaID包含媒体项的id)

@foreach (var item in @Model.Children.Where("Visible").OrderBy("UpdateDate"))
{
    var media = Library.MediaById(item.MediaID);

       <div class="galleryListItem" style="background-image: url('/imageGen.ashx?image=@media.Url&width=273&height=161');">
        <a href="@item.Url" class="link"></a>
        <div class="contentGalleryList">
            <div class="highlightGalleryList">@item.Name</div>
        </div>
    </div>
}

如果您需要更多关于如何在Umbraco Razor做事的信息,请下载宝贵的umbraco DynamicNode razor cheatsheet

our.umbraco.org wiki

上还有很多很棒的信息

答案 1 :(得分:0)

我解决了。问题是我在其他代码部分中有开放代码部分。

工作代码:

@foreach (var item in @Model.Children.Where("Visible").OrderBy("UpdateDate"))
{
    var link = new umbraco.cms.businesslogic.media.Media(item.MediaID).Children.FirstOrDefault().getProperty("umbracoFile").Value;

    <div class="galleryListItem" style="background-image: url('/imageGen.ashx?image=@link&width=273&height=161');">
        <a href="@item.Url" class="link"></a>
        <div class="contentGalleryList">
            <div class="highlightGalleryList">@item.Name</div>
        </div>
    </div>
}