haacked.com/archive/2011/01/06/...

жу за публикацией в блоге Стивена СандерсонаВот создать редактируемый список с переменной длиной элементов. В своем посте он использует div для отображения нового элемента в списке, но я использую таблицу. Таким образом, мое частичное представление для каждого элемента представляет собой тег tr с различными полями для редактирования. Прямо сейчас мой частичный вид выглядит примерно так:

<tr>                
       @using (Html.BeginCollectionItem("LineItems"))
       {             
            <td>        
                @Html.TextBoxFor(m => m.Description)
                @Html.ValidationMessageFor(m => m.Description)                              
            </td>
            <td>
                @Html.TextBoxFor(m => m.Quantity)        
                @Html.ValidationMessageFor(m => m.Quantity)
            </td>
            <td>
                @Html.TextBoxFor(m => m.Amount)          
                @Html.ValidationMessageFor(m => m.Amount)       
            </td>
       }       
</tr>

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

<tr>
   <input type="hidden" name="LineItems.index" .... />
   <td>
      ...
   </td>
   ...
</tr>

В связанном сообщении есть комментарий другого пользователя, в котором говорится, что вы можете переместить оператор using в первый тег, и он работает, но я не смог заставить его работать, используя ASP.NET MVC 3 и механизм просмотра Razor.

У кого-нибудь есть идеи, как использовать логику, представленную Стивеном Сандерсоном, но получить скрытое поле ввода индекса внутри первого тд, чтобы не генерировать недопустимый HTML?

Спасибо