当没有上传图像时,Razor的Umbraco.media会抛出错误

时间:2016-01-05 12:40:32

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

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

这一切似乎都很好我用@ Umbraco.Field文本和@ Umbraco.Media(CurrentPage.myMediaAlias).url用于bg图片。使用'media picker'作为数据类型。

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

  

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

因为它应该是可选的放入那张图片,我宁愿想要一个空的回来。 媒体选择器属性不是必需的。我怎样才能让它发挥作用?

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



}

2 个答案:

答案 0 :(得分:0)

未经测试 - 但这样的事情应该有效。他们关键是使用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">
}

OR

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

答案 1 :(得分:-1)

经过一些调整和@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))" >

这是一个速记,仍然在风格网址中:@(theobj!=empty?nah:yah)就像一个魅力。 但是我必须在比较之前转换theobj .ToString()或者它似乎.Media无法确定它是int还是字符串。即使问题是它根本就没有任何东西。