在razor模板中混乱地打开和关闭标签

时间:2018-08-07 05:02:09

标签: asp.net asp.net-mvc-4 razor

我有一个cshtml模板页面,该页面将一些项目列表呈现到多个表中。这些表是使用一些自定义分组逻辑创建的。这就是为什么开始表格标签与结束标签不匹配的原因。而且,当我编译打开cshtml文件的项目时,会收到警告“结束标记缺少匹配的开始标记”。

以下查看代码段演示了这种情况:

@model IEnumerable<OpeningClosingTagTestApp.Models.ListItem>

@{
  ViewBag.Title = "List";
  Layout = null; 
}

@{
  var prevGroupColumn1 = string.Empty;
  var prevGroupColumn2 = string.Empty;
  var prevValue = string.Empty;
}
@foreach (var item in Model)
{
  if (prevGroupColumn1 != item.GroupingColumn1)
  {
    if (!string.IsNullOrEmpty(prevGroupColumn2))
    {
      @:</table>
      prevGroupColumn2 = string.Empty;
    }
    prevGroupColumn1 = item.GroupingColumn1;
    <h3>Some header</h3>
  }
  if (prevGroupColumn2 != item.GroupingColumn2)
  {
    if (!string.IsNullOrEmpty(prevGroupColumn2))
    {
      @:</table>
    }
    prevGroupColumn2 = item.GroupingColumn2;
    <h5>Some other header</h5>
    @:<table>
      <tr>
        <th>Grouping Column 1</th>
        <th>Grouping Column 2</th>
        <th>Value</th>
      </tr>
  }
  <tr>
    <td>
      @item.GroupingColumn1
    </td>
    <td>
      @item.GroupingColumn2
    </td>
    <td>
      @item.ValueColumn
    </td>
  </tr>
}

有没有一种方法不会在编译时发出警告?我能想到的是将逻辑放在一些帮助程序类中。但是将这种逻辑放在视图中似乎更加清楚。

0 个答案:

没有答案