0

我让这个宏在实时服务器上愉快地运行。在 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
  }

}

它抱怨“:”在代码块的开头无效。

我在 VS2010 中有 MVC4 和 Razor 扩展。据我了解,这一切都是有效的。谁能解释为什么它不能通过验证?

谢谢。

4

2 回答 2

2

foreach 循环中的语句应该可以在不使用 @: 的情况下正常运行:

@{
    //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
    }
}
于 2012-10-30T20:44:04.030 回答
1

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

为此,我在 CodePlex 上的网页团队的错误数据库中打开了一个错误,希望它会在下一个版本中得到解决。

HTH,粘土

于 2012-10-30T21:06:05.610 回答