【问题标题】:Razor's Umbraco.media throws error when no image is uploaded没有上传图像时,Razor 的 Umbraco.media 会抛出错误
【发布时间】:2016-01-05 12:40:32
【问题描述】:

我正在制作一堆内容框来呈现给主人。它们都包含背景图片、标题和内容,都是可选的。所以如果没有=空的div。 -> 删除。

这一切似乎都很好,我使用 @Umbraco.Field 作为文本,使用 @Umbraco.Media(CurrentPage.myMediaAlias).url 作为背景图片。使用“媒体选择器”作为数据类型。

将标题和内容字段留空没有问题。 但是当最后一个盒子没有定义图片时,问题就开始了。 我得到了:

对象引用未设置为对象的实例。 [没有相关的源代码行]

由于它应该是可选的,所以我宁愿想要一个空回。 媒体选择器属性不是强制性的。我怎样才能让它工作?

@section contentMid2 {

<div class="c-box-wrapper">

     <div class="c-box" id="c-box-3" Style="background-image: url(@Umbraco.Media(CurrentPage.box3Bg).Url )" >   
        <div class="transbox">

                        <div class="home-head-1"> @Umbraco.Field("mainHeading3") </div>
                        <div class="content-text1"><p>@Umbraco.Field("mainContent3")</p></div>

        </div>



</div>



}

【问题讨论】:

  • 在请求 Url 之前,您必须检查 @Umbraco.Media(CurrentPage.box3Bg) 是否为空。尝试在&lt;div&gt; 上方的单独变量中执行此操作,并将该变量用于Style 属性。
  • 这实际上是我第一次尝试它,我再次尝试并尝试使用谷歌搜索更多,并在&lt;Div&gt;标签中找到“if()”作为更少的代码。但我每次尝试使用@Umbraco.Media(CurrentPage.box3Bg)in 查询时都会收到此错误:以下方法或属性之间的调用不明确:'Umbraco.Web.UmbracoHelper.Media(params int[])' 和'Umbraco.Web.UmbracoHelper.Media(params string[])'

标签: asp.net-mvc-4 razor umbraco


【解决方案1】:

未经测试 - 但这样的事情应该可以工作。他们的关键是使用 HasValue

if(@CurrentPage.HasValue("box3Bg"){
     <div class="c-box" id="c-box-3" Style="background-image: url(@Umbraco.Media(CurrentPage.box3Bg).Url )" >
}
else{
     <div class="c-box" id="c-box-3">
}

@{
     var inlineStyle = "";
     if(@CurrentPage.HasValue("box3Bg"){
         inlineStyle = background-image: url(@Umbraco.Media(CurrentPage.box3Bg).Url )
     }
}
<div class="c-box-wrapper">
   <div class="c-box" id="c-box-3" Style="@inlineStyle" >   
     <div class="transbox">
        <div class="home-head-1"> @Umbraco.Field("mainHeading3") </div>
        <div class="content-text1"><p>@Umbraco.Field("mainContent3")</p></div>
     </div>
  </div>
</div>

【讨论】:

    【解决方案2】:

    经过一些调试和@marco 的帮助。我意识到如何解决它:

    <div class="c-box" id="c-box-3" Style="background-image: url(@(Umbraco.Media(CurrentPage.box3Bg.ToString())!=""?Umbraco.Media(CurrentPage.box3Bg).Url:Umbraco.Media(CurrentPage.box1Bg).Url))" >
    

    这是一个速记,仍然在样式 url 中:@(theobj!=empty?nah:yah) 就像一个魅力。 但我必须在比较之前转换theobj.ToString(),否则看起来.Media 无法确定它是int 还是string。即使问题是那里什么都没有。

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 2020-11-21
      • 2016-06-01
      • 1970-01-01
      相关资源
      最近更新 更多