我创建了一些Razor代码以将图像输出到页面(如果存在)。它在下面进行了详细介绍,并包含一些简单的检查以防止呈现空白列表项。该网站已经上线并且运行良好。然后,客户端从Umbraco的媒体文件夹中删除了该图像,这意味着我的节点已分配了有效的图像,但该图像不存在。我得到以下异常:

'字符串'不包含'crops'的定义

我该如何处理?

@using umbraco.MacroEngines;
@inherits umbraco.MacroEngines.DynamicNodeContext
@using umbraco.presentation.nodeFactory
@using umbraco.cms.businesslogic.media

<ul>
    @foreach (dynamic client in @Model.Children)
    {
        var image = Model.MediaById(client.Logo);
        var crops = image.imageCropper.crops;

        <li>
            <h2><span>@client.Name</span></h2>

            @if (crops != null || crops.GetType().ToString() != "System.String")
            {
                <span class="itemImage">
                    <img src="@crops.Find("@name", "cropname").url" alt="@client.Name" />
                </span>
            }
        </li>
    }
</ul>

最佳答案

在这种情况下,您可能需要进行类型检查。我相信MediaById方法应返回DynamicNode(如果有效),因此应执行以下操作:

if(image.GetType() == typeof(DynamicNode))
{
    ...
}

07-24 12:27