1

かみそりのページに if ステートメントをいくつか追加しようとしています。変更中のページは変更前に機能していましたが、以下のコード サンプルで強調表示したブロックを追加すると、次のエラーが発生します。

Razor スクリプトの読み込みエラー ~/macroscripts/genericpage.cshtml コード ブロックに終了文字 "}" がありません。このブロック内のすべての「{」文字に一致する「}」文字があること、および「}」文字がマークアップとして解釈されていないことを確認してください。

if (publishedRightHandPods.Any())
{
    foreach(var rh in publishedRightHandPods)
    {   
        if (rh.image.GetType() == typeof(DynamicXml))
        {               
            if (rh.link.GetType() == typeof(DynamicXml))
            {
                var linkSupplied = !String.IsNullOrEmpty(rh.link.url) && !String.IsNullOrWhiteSpace(rh.link.url);
                var titleSupplied = !String.IsNullOrEmpty(rh.title) && !String.IsNullOrWhiteSpace(rh.title);

                @* *************** *@
                @* I'M ADDING THIS *@                   
                @* *************** *@

                @{
                  if (linkSupplied) {
                    <a href="@(rh.link.url)">
                  }
                }

                @* ****************** *@
                @* END OF ADDED BLOCK *@                    
                @* ****************** *@

                   <div class="side-pod" style="background: url('@(rh.image.mediaItem.Image.umbracoFile)') no-repeat scroll 0 0 transparent; height: @(rh.image.mediaItem.Image.umbracoHeight)px">
                       @{
                           if (titleSupplied)
                           {
                               <h2 class="title" style="color: #@(rh.textColour);">@Html.Raw(rh.title.ToString())</h2>
                           }
                       }
                       @{
                           if (!String.IsNullOrEmpty(rh.linkText) && !String.IsNullOrWhiteSpace(rh.linkText) && !String.IsNullOrEmpty(rh.link.url) && !String.IsNullOrWhiteSpace(rh.link.url))
                           {
                               <a class="findoutmore-btn" href="@(rh.link.url)">@(rh.linkText)</a>
                           }
                       }
                   </div>

                @* *************** *@
                @* I'M ADDING THIS *@                   
                @* *************** *@

                @{
                  if (linkSupplied) {
                    </a>">
                  }
                }

                @* ****************** *@
                @* END OF ADDED BLOCK *@                    
                @* ****************** *@

            }
      }
 }

内部の if ステートメントが機能している理由がわかりませんが<div>、新しい (類似の) ステートメントを div の外に追加すると、エラーが発生します。

****アップデート****

追加した if ステートメントを囲む @{} を削除すると、次のようになります。

if (linkSupplied) {
    <a href="@(rh.link.url)">
}

画面に次のように表示されます。

あなたが見ることができる画像は、divに適用された背景です

4

3 に答える 3

3

ステートメント内で HTML タグを開く必要があるがif、閉じたくない場合は、次を使用することをお勧めします@Html.Raw()

@if (linkSupplied) { @Html.Raw(string.Format("<a href=\"{0}\">", rh.link.url)) }

A...では、タグを閉じると...

@if (linkSupplied) { @Html.Raw("</a>") }

于 2013-09-20T08:46:23.710 に答える
2

2 番目の if ステートメントの最後の終了タグの後に、追加のアポストロフィと大記号があります。

@{
                  if (linkSupplied) {
                    </a>">
                  }
                }
于 2013-09-20T06:53:02.763 に答える