Объединить несколько `<td>` 'в один `<tr>`.ASP.NET MVC3 - PullRequest
0 голосов
/ 11 августа 2011

У меня есть проект ASP.NET MVC3.

Я хочу вставить <td> в одну таблицу <tr>.Эти <td> содержат по одному <div> каждый.Это происходит из switch (), который находится в частичном представлении и отображает в другое представление (где <tr> может содержать несколько <td>).

Это частичное представление:

@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;
       }
}

И этот частичный вид отображается здесь:

<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> и два <div> с одинаковым PitlaneId = 2 должны быть внутри одного и того же <td>. Я имею в виду <td> с одним и тем же идентификатором должны слиться воедино. Та же самая ситуация, когда PitlaneId приходит в следующем порядке: 1,2,3,2.

1 Ответ

0 голосов
/ 11 августа 2011

Это единственный способ заставить это работать. Это кажется вонючим, но обеспечивает порядок элементов, которые вы указали.

@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>")
...