かみそりのページに 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)">
}
画面に次のように表示されます。