Campos na view:
Recuperação no controller:
A segunda forma permite utilizar um índice não-sequencial alfanumérico:
Neste segundo exemplo é necessário incluir um campo do tipo "hidden", para cada campo de entrada de valor, com o value sendo o índice. Apesar dessa segunda opção ser mais versátil é limitada pois o índice ainda precisar ser único.
Depois de estudar e pesquisar muito vi que era possível criar um bind customizado, então porque não criar um para eliminar os índices e recuperar as coleções?
No bind é possível ter acesso ao form que foi submetido, isso possibilitou ter acesso a todas as propriedades do formulário e seus valores:
Não vou me aprofundar no código do bind, o mesmo está disponível para estudo e melhorias no projeto: https://github.com/rafaelguinho/collectionbinder. Para utilizar copie a classe da pasta Binders para seu projeto e no Global.asax.cs adicione uma linha para cada coleção:
Na sua view as coleções agora podem ter todas o mesmo nome, que deve ser "NomeDaColeção.Atributo" conforme exemplo:
No próximo post eu vou mostrar como "automatizar" o processo de adicionar e remover utilizando um Helper. Até mais!
0 comentários:
Postar um comentário