-1

次のコードがあります。

@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。とにかく、これはより良い解決策のように思えますが、最初の試みがうまくいかなかった理由を理解したいと思います。

4

1 に答える 1

1

TD が適切に閉じられていません。</text>case ステートメントから を削除し、の後に移動し</td>ます。

<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">
        break;
      case "lib":
        <text>
          <td class ="@css" style="color: @colors.Lib.html">

        break;
      case "net":
        <text>
          <td class ="@css" style="color: @colors.Net.html">

        break;
      default:
        <text>
          <td class="@css">

        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>
        </text>
</tr>
于 2012-09-20T17:01:22.437 に答える