我有一个ASP.NET MVC3项目。
我想在一个表<td>
中插入一些<tr>
。这些<td>
各包含一个<div>
。这些来自一个switch(),它位于partialView中并呈现到另一个视图中(<tr>
可以包含多个<td>
)。
这是partialView:
@foreach (var item in Model)
{
switch (item.PitlaneId)
{
case 1:
<td id=a>
<div class="drag">
Name: @Html.DisplayFor(modelItem => item.Name) <br />
Constrainted: @Html.DisplayFor(modelItem => item.Constrainted) <br />
</div>
</td>
break;
case 2:
<td id=b>
<div class="drag">
Name: @Html.DisplayFor(modelItem => item.Name) <br />
Constrainted: @Html.DisplayFor(modelItem => item.Constrainted) <br />
</div>
</td>
break;
case 3:
<td id=c>
<div class="drag">
Name: @Html.DisplayFor(modelItem => item.Name) <br />
Constrainted: @Html.DisplayFor(modelItem => item.Constrainted) <br />
</div>
</td>
break;
default: break;
}
}
这个partialView在这里呈现:
<table title="test" id="testTableID">
<colgroup> @foreach (var item in Model){<col width="300" />} </colgroup>
<tbody>
<tr>
@{Html.RenderAction("Tasks"); } @* <--- Here it renders*@
</tr>
</tbody>
</table>
当switch()多次转到同一个案例时,会出现问题。如果我有这个顺序的PitlaneId:1,2,2,3;它将在我的表中创建4个<td>
。在这种情况下,我应该只有3 <td>
个,并且具有相同PitlaneId = 2的两个<div>
应该在同一个<td>
内。 我的意思是<td>
具有相同的ID应合并在一起。当PitlaneId按此顺序排列时的情况相同:1,2,3,2。
答案 0 :(得分:0)
这是我能让它发挥作用的唯一方法。它看起来很臭,但它提供了你指定的元素的顺序。
@Html.Raw("<table><tr><th>ID 1</th><th>ID 2</th><th>ID 3</th></tr><tr>")
@foreach (int id in Model.OrderBy(p => p.PitlaneID)
.Select(p => p.PitlaneID).Distinct())
{
switch(id)
{
case 1:
@:<td id="a">
break;
case 2:
@:<td id="b">
break;
case 3:
@:<td id="c">
break;
default: break;
}
foreach (var item in Model.Where(p => p.ID == id))
{
<div class="drag">
Name: @Html.DisplayFor(modelItem => item.Name) <br />
Constrainted: @Html.DisplayFor(modelItem => item.Constrainted) <br />
</div>
}
Html.Raw("</td>");
}
@Html.Raw("</tr></table>")