0

このマクロをライブサーバーで問題なく実行しています。WebMatrix では問題ありませんでした。現在、WebMatrix は自身を 2 (更新) に更新しており、いくつかのマクロを実行しません。これはその 1 つです:-

    @{
  //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 の Web ページ チームのバグ データベースにバグを登録しました。次のバージョンで修正されることを願っています。

HTH、クレイ

于 2012-10-30T21:06:05.610 に答える