次のコードがあります。
@helper Category(IGroup group)
{
if (!group.Exist)
{
return;
}
var colors = AppContext.Settings.Colors.Charts.Net;
var css = group.Name.Replace(" ", String.Empty).ToLower();
var id = css.ToUpper() + "_";
<tr>
<td class="summarygridbackground" style="font-weight:bold;">@group.Name</td>
</tr>
foreach(var category in group.Categories)
{
<tr id="@id@category.Id" class="summarygridbackground">
<td class="category">
<div style="float:left">@category.Name</div>
<div class="hovericon">@FormatAs.Currency(category.TotalValue)</div>
</td>
</tr>
}
<tr class="summarygridbackground">
@switch(css)
{
case "inv":
<text>
<td class ="@css" style="color: @colors.Inv.html">
</text>
break;
case "other":
<text>
<td class ="@css" style="color: @colors.Other.html">
</text>
break;
case "lib":
<text>
<td class ="@css" style="color: @colors.Lib.html">
</text>
break;
case "net":
<text>
<td class ="@css" style="color: @colors.Net.html">
</text>
break;
default:
<text>
<td class="@css">
</text>
break;
}
<div style="float:left; padding-left:12px;"> Total @group.Name</div>
<div style="float:right; padding-right:10px;">@FormatAs.Currency(group.TotalValue)</div>
</td>
</tr>
}
現状では、ビューをロードすると、ヘルパーの最後の行でコードが失敗し、次のメッセージが表示されます。
パーサー エラーの説明: この要求を処理するために必要なリソースの解析中にエラーが発生しました。次の特定の解析エラーの詳細を確認し、ソース > ファイルを適切に変更してください。
"パーサー エラー メッセージ: 開始タグが一致しない終了タグ "tr" が見つかりました。開始タグと終了タグのバランスが適切ですか?
ソース エラー:
65行目: @FormatAs.Currency(group.TotalValue) 66行目: 67行目: 68行目: }"
最後の行の最後を削除すると</tr>
、次のメッセージで失敗します。
パーサー エラーの説明: この要求を処理するために必要なリソースの解析中にエラーが発生しました。次の特定の解析エラーの詳細を確認し、ソース ファイルを適切に変更してください。
パーサー エラー メッセージ: 「tr」要素が閉じられていません。すべての要素は、自己終了であるか、一致する終了タグを持っている必要があります。
ソース エラー:
32行目: 33行目: } 34行目: 35行目: @switch(css)
私はそれを理解できません。それはヘルパーメソッド全体です。私にはバランスが取れているように見えます。このヘルパーへのすべての呼び出しは、以前は正常に機能しており、 s にネストされておらず、s<tr>
のみです<div>
誰か助けてくれませんか?
switch
編集:そのセグメントから を削除し、代わりに の先頭でそれを使用してforeach
を設定し、代わりにそれを使用することで、なんとか機能させることができましたvar color
。とにかく、これはより良い解決策のように思えますが、最初の試みがうまくいかなかった理由を理解したいと思います。