我正在制作一堆内容框以呈现给主人。它们都包含背景图片,标题和内容,所有这些都是可选的。所以如果没有=空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>
}
答案 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还是字符串。即使问题是它根本就没有任何东西。