Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Non-sequential collection binding

What is the best way to bind a dynamically created collection of elements in an MVC view to a collection in MVC 4. I know previous versions have required that the elements look like this:

<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" />

But when you are dynamically adding new elements and removing them, things get out of sequence pretty quickly.

Does MVC 4 add a way to bind to a non-sequential collection?

like image 227
Dismissile Avatar asked Sep 05 '12 18:09

Dismissile


1 Answers

Non sequential collection indices supported since MVC2 you just need to have a separate hidden field which will hold the index with the name schema: CollectionName.Index:

E.g:

<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" />

You can find more info about the topic here: Model Binding To A List

like image 125
nemesv Avatar answered Oct 05 '22 23:10

nemesv