Umbraco Razor新手语法问题

时间:2011-10-17 14:41:50

标签: razor umbraco

我有以下几乎可以工作的代码块。它完成外部@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>
    }
 }

2 个答案:

答案 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>" : "")