Cuando necesitamos hacer un post de una lista de objetos desde la vista a un controlador, .Net nos ayuda haciendo el enlace de modelos (Model Binding) desde nuestra forma html a un lista de objectos.

https://gist.github.com/KodiakMx/9e7931e55f942855a5ed26b75da01e85

Sin embargo, del lado de la vista el trabajo no es tan sencillo como lo pudiéramos adivinar. Si bien, la vista recibe una la lista de objectos como modelo, nuestro primer pensamiento es utilizar un ciclo for-each. Pero en este caso, para lograr enviar estos datos de manera que el enlace de modelo lo pueda interpretar correctamente debemos de usar un ciclo for en su lugar. Esto por la forma en que los elemento son nombrados e identificados en la forma html.

Por ejemplo, si queremos mostrar la lista de un modelo persona en una tabla html y posteriormente enviar los valores correspondientes a nuestro controlador, tendriamos un código similar a este:

https://gist.github.com/KodiakMx/acf235ebe69dee8d8c87b76c936ce6d7

Con esto permitiremos los datos sean nombrados correctamente en el código html final para posteriormente sean transportados al controlador en el submit de la forma.


Como referencia, aquí el modelo utilizado en el ejemplo:

https://gist.github.com/KodiakMx/f92c905169a4debee51dd99f69f73a9e

Adicionalmente, para Asp .Net MVC se pueden utilizar los métodos extendidos usuales de la forma:

https://gist.github.com/KodiakMx/e88f76abcc4a5f5a71c21dbc067ddd87