【问题标题】:Testing image crops existence with Razor in Umbraco在 Umbraco 中使用 Razor 测试图像作物的存在
【发布时间】:2012-05-10 20:08:01
【问题描述】:

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

“字符串”不包含“作物”的定义

我该如何处理?

@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>

【问题讨论】:

    标签: image umbraco


    【解决方案1】:

    在这种情况下,您可能需要进行类型检查。我相信 MediaById 方法应该返回一个 DynamicNode 如果它是有效的,所以应该像下面这样工作:

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

    【讨论】:

      【解决方案2】:

      我遇到了这个问题。我发现,如果 Media 已被删除(并且过去已被选中),则 Model.MediaById(imageid) 调用会引发异常。

      所以我这样设置我的测试:

      dynamic mainMediaImage = new DynamicNull();
      try
      {
        mainMediaImage = Model.MediaById(related.eventMainImage);
      }
      catch(Exception e)
      {
        <p style='display: none;'>@e.Message</p>
      }
      var cropUrl = "";
      
      if(mainMediaImage.GetType() == typeof(DynamicMedia))
      {  
         cropUrl = GetImageCropperUrl(Model.MediaById(related.eventMainImage).crops, "List Image");    
      }       
      

      我仍然收到错误,但它不会显示给用户。

      我发现它永远不会进入我的 DynamicMedia 检查,所以我必须在调用周围添加 try...catch() 否则整个宏会失败。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多