我有以下几乎可以工作的代码块。它完成外部@foreach循环并启动每个子@foreach循环。它会在每对中输出第一张图像,然后输出
“} if(countItem == 1)(”可以在浏览器中读取。
任何建议都将不胜感激
克雷格
代码: -
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
int level = 2;
var subjects = @Model.AncestorOrSelf(level).Children.Where("nodeTypeAlias == \"SideGallerySectionHeading\"");
int countItem = 1;
if (subjects != null) {
<div class="highslide-gallery">
@foreach(var subjectName in subjects){
<h3>@subjectName.Name</h3>
foreach(dynamic image in subjectName.Children) {
if(countItem==1){<div class="picrowdiv">}
<div class="picdiv">
<a href="@image.Media("itemLarge","umbracoFile")" class="highslide" onclick="return hs.expand(this)">
<img src="@image.Media("itemThumbnail","umbracoFile")" width="100" height="100" alt="test"></a>
<div class="highslide-caption">
@image.bodyText
</div>
<p>@image.caption</p>
</div>
if(countItem==1){</div>}
countItem++;
if(countItem>2){countItem=1;}
}
}
</div>
}
}
答案 0 :(得分:0)
您可以尝试重写该行
if(countItem==1){</div>}
进入
@if(countItem==1){
</div>
}
答案 1 :(得分:0)
Razor非常挑剔关闭你的html标签,所以你可能需要重构才能完成这项工作。我喜欢三元运算符这样的东西
试
@(countItem==1 ? "</div>")
@countItem++;
@(countItem>2 ? countItem=1)
你也可以用:
做其他事情所以
@(countItem==1 ? "</div>" : "")