Umbraco Razor语法问题

时间:2012-10-30 19:39:25

标签: razor umbraco

我让这个宏在实时服务器上愉快地运行。 WebMatrix没问题。现在WebMatrix已经将自己更新为2(刷新),它不会运行一些宏,这是其中之一: -

    @{
  //Check there are slider image page loaded
  var theCount = @Model.Descendants("SliderImagePage").Count();

  if (theCount > 0)
    {
        foreach (var theImagePage in Model.Descendants("SliderImagePage"))
          {
           var theImage = theImagePage.Media("sliderImage","umbracoFile");
           if (theImagePage.IsFirst()) 
           {
            @:<div class="slide" style="background-image:url('@Html.Raw(theImage)');display:block;"></div>
            } else {
            @:<div class="slide" style="background-image:url('@Html.Raw(theImage)');display:none;"></div>
            }
          }    
     }
  else
  {
   @: No Picture Image pages set up
  }

}

它抱怨&#34;:&#34;在代码块的开头无效。

我在VS2010中有MVC4和Razor Extensions。据我了解,它都是有效的。任何人都可以解释为什么它不能通过验证吗?

感谢。

2 个答案:

答案 0 :(得分:2)

foreach循环中的语句运行正常而不使用@:for output:

@{
    //Check there are slider image page loaded
    var theCount = @Model.Descendants("SliderImagePage").Count();

    if (theCount > 0)
    {
        foreach (var theImagePage in Model.Descendants("SliderImagePage"))
        {
            var theImage = theImagePage.Media("sliderImage","umbracoFile");
            if (theImagePage.IsFirst()) 
            {
                <div class="slide" style="background-image:url('@Html.Raw(theImage)');display:block;"></div>
            }
            else 
            {
                <div class="slide" style="background-image:url('@Html.Raw(theImage)');display:none;"></div>
            }
        }    
     }
    else
    {
        @: No Picture Image pages set up
    }
}

答案 1 :(得分:1)

看起来你在Razor中发现了一个编译问题。有一个简单的解决方法;如果你从第3行删除'@'字符,你上面给出的代码将在Razor v1和Razor v2中编译。

我已经在CodePlex的网页团队的bug数据库中打开了一个错误,希望它将在下一个版本中得到解决。

HTH, 粘土