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?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос