2012-09-05 2 views
7

Что такое лучший способ связать динамически созданную коллекцию элементов в целях MVC для коллекции в MVC 4. Я знаю предыдущие версии требовали, чтобы элементы выглядеть следующим образом:непоследовательная коллекция связывание

<input name="Categories[0].CategoryID" type="hidden" value="123" /> 
<input name="Categories[0].CategoryName" type="hidden" value="Music" /> 
<input name="Categories[1].CategoryID" type="hidden" value="456" /> 
<input name="Categories[1].CategoryName" type="hidden" value="Movies" /> 

Но когда вы динамически добавляете новые элементы и удаляете их, все быстро выходит из строя.

MVC 4 Добавить способ привязки к несекретной коллекции?

ответ

11

Номер последовательных индексам сбора поддерживается, так как MVC2 вам просто необходимо иметь отдельное скрытое поле, которое будет содержать индекс с name схемой: CollectionName.Index:

Например:

<input type="hidden" name="Categories.Index" value="3" /> 
<input name="Categories[3].CategoryID" type="hidden" value="123" /> 
<input name="Categories[3].CategoryName" type="hidden" value="Music" /> 

<input type="hidden" name="Categories.Index" value="1" /> 
<input name="Categories[1].CategoryID" type="hidden" value="456" /> 
<input name="Categories[1].CategoryName" type="hidden" value="Movies" /> 

Вы можете найти более подробную информацию по этой теме: Model Binding To A List

+0

Это действительно не работает хорошо при использовании Html Helpers, хотя, поскольку вы не можете управлять именем входных элементов, используя htmlAttributes. – Dismissile

+0

Нет, нет прямой поддержки для этого с помощью 'HtmlHelpers', но есть некоторые сторонние помощники, такие как [BeginCollectionItem helpers] (https://github.com/danludwig/BeginCollectionItem), которые могут генерировать скрытое поле индекса и правильный ввод имена для вас. – nemesv

+0

Bummer. Я надеялся, что MVC4 сделает это немного легче. – Dismissile

Смежные вопросы