如何在MVC3 Razor的foreach循环中显示无序列表?

Ala*_*an2 2 asp.net-mvc razor asp.net-mvc-3

我有以下代码:

@foreach (Content topic in Model.Topics)
{
    if (topic.RowKey.Substring(2, 2) == "00")
    {
        <h3>@topic.RowKey.Substring(0, 2).TrimStart('0') - @Html.Raw(topic.Title)</h3>
    }
    else
    {
        <p>@String.Format("{0}.{1}",topic.RowKey.Substring(0, 2).TrimStart('0'),topic.RowKey.Substring(2, 2).TrimStart('0').PadLeft(1, '0')) - @Html.Raw(topic.Title)</p>
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输入数据(topic.RowKey的值)如下所示:

0100 <- This is topic 1
0101 <- This is topic 1.1
0102 <- This is topic 1.2
0103 <- This is topic 1.3
0200 <- This is topic 2
0201 <- This is topic 2.1
etc....
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我真正想做的是每次RowKey的前两位数改变时都有一个h3标题然后在那之间然后下一个h3标题我希望有一个无序列表而不是仅仅<p>xxx</p>.我尝试了许多不同的组合,但没有任何作用.这甚至可以用剃刀吗?我遇到的大问题是如何让s <ul></ul>s正确显示?我知道我可以把一<ul><h3>,但我怎么可以把</ul>

Rap*_*aus 8

未经剃须刀检查,可能会有@在这里或那里失踪,但......

@var groupedTopics = Model.Topics.GroupBy(t => t.RowKey.Substring(0, 2));

@foreach (var group in groupedTopics) {
  var firstTopic = group.First();
  <h3>@firstTopic.RowKey.Substring(0, 2).TrimStart('0') - @Html.row(firstTopic.Title)</h3>
  <ul>
  @foreach (var topic in group.Skip(1)) {
      <li>@String.Format("{0}.{1}",topic.RowKey.Substring(0, 2).TrimStart('0'),topic.RowKey.Substring(2, 2).TrimStart('0').PadLeft(1, '0')) - @Html.Raw(topic.Title)</li>
  }
  </ul>

}
Run Code Online (Sandbox Code Playgroud)