-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)

我想不通,这就是整个辅助方法,对我来说它看起来很平衡,并且对这个辅助方法的所有调用之前都运行良好,并且没有嵌套在<tr>s 中,只有<div>s

有人可以帮我吗?

switch编辑:我设法通过从该段中删除它来使其工作,而是在开始时使用它foreach来设置 a 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 回答