Asp.net mvc 4 剃刀&x27;s Umbraco.media在未上载图像时引发错误

Asp.net mvc 4 剃刀&x27;s Umbraco.media在未上载图像时引发错误,asp.net-mvc-4,razor,umbraco,Asp.net Mvc 4,Razor,Umbraco,我正在制作一堆内容框以呈现给主控。它们都包含背景图片、标题和内容,都是可选的。因此,如果无=空div。->删除 一切似乎都很好,我使用@Umbraco.Field作为文本,使用@Umbraco.Media(CurrentPage.mymediaalis).url作为背景图片。使用“媒体选择器”作为数据类型 标题和内容字段留空没有问题。 但问题是在没有为最后一个框定义图片时开始的。 我得到了: 对象引用未设置为对象的实例。 [无相关来源行] 因为它应该是可选的放在那个图片,我宁愿要一个空的回来。

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

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

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

对象引用未设置为对象的实例。 [无相关来源行]

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

@第2节内容{

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



}

@Umbraco.字段(“主标题3”)
@Umbraco.字段(“主内容3”)

}
未经测试-但类似的方法应该可以工作。它们的关键是使用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">
}
if(@CurrentPage.HasValue(“box3Bg”){
}
否则{
}

@{
var inlineStyle=“”;
if(@CurrentPage.HasValue(“box3Bg”){
inlineStyle=背景图像:url(@Umbraco.Media(CurrentPage.box3Bg.url)
}
}
@Umbraco.字段(“主标题3”)
@Umbraco.字段(“主内容3”)


经过调试和@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)
工作起来很有魅力。
但是在比较之前,我必须将bj
.ToString()
转换为字符串,否则它看起来像是
。Media
无法决定它是int还是string。即使问题是它是否完全不在其中。

您必须检查
@Umbraco.Media(CurrentPage.box3Bg)
如果它在请求它的
Url
之前为空。尝试在
上方的单独变量中执行此操作,并将该变量用于
Style
属性。这实际上是我第一次尝试它,我再次尝试并尝试在谷歌上搜索了一点,发现
标记中的“if()”至于更少的代码。但每次尝试在查询中使用
@Umbraco.Media(CurrentPage.box3Bg)
时,我都会遇到这个错误:以下方法或属性之间的调用不明确:“Umbraco.Web.UmbracoHelper.Media(params int[])和“Umbraco.Web.UmbracoHelper.Media(params string[])”
<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))" >