none
Passar para o controle um parâmetro list(of ) RRS feed

  • Pergunta

  • Boa noite!
     Alguém saberia como passar para o controller um parâmetro do tipo list? Vejam minha situação:

    Tenho uma View que está herdando uma lista de um modelo. Nessa View estou carregando uma table com todos os itens desse modelo. Na table, cada coluna é um editor for, pois, permito que o usuário altere os dados que foram carregados.

    Meu problema é para salvar o que foi alterado. Como eu faço para mandar o modelo novamente para o controller para que seja salvo o que foi alterado? Lembrando que minha View é uma lista de um modelo.

    Se essa não for a melhor forma de fazer isso, aceito sugestões de outras maneiras também.

    Espero que tenha conseguido ser clara.

    Daniela


    • Editado dani.ela segunda-feira, 5 de maio de 2014 21:08
    segunda-feira, 5 de maio de 2014 21:07

Respostas

  • Segue um snippet básico:

    <%@ Page Inherits="ViewPage<IList<Book>>" %>
    
    <% for (int i = 0; i < 3; i++) { %>
    
      <%: Html.TextBoxFor(m => m[i].Title) %>
      <%: Html.TextBoxFor(m => m[i].Author) %>
      <%: Html.TextBoxFor(m => m[i].DatePublished) %> 
    
    <% } %>

    Nesse post aqui tem a explicação detalhada:

    http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

    • Sugerido como Resposta Wennder SantosMVP terça-feira, 6 de maio de 2014 13:26
    • Marcado como Resposta dani.ela terça-feira, 6 de maio de 2014 13:31
    terça-feira, 6 de maio de 2014 02:04
    Moderador
  • Olá,

    só complementado o João. Não use for each para criar sua table na view, pois, se você quiser passar essa lista como parâmetro para o controller não vai funcionar se ela for criada com for each. Não sei porque, mas, o for each não gera o html correto, use o for comum, como mostra o exemplo do João.


    Wennder Santos

    Se solucionou seu problema ou dúvida, não esqueça de marcar como resposta. Se foi util, não esqueça de marcar como util.


    • Marcado como Resposta dani.ela terça-feira, 6 de maio de 2014 13:31
    terça-feira, 6 de maio de 2014 13:28

Todas as Respostas

  • Segue um snippet básico:

    <%@ Page Inherits="ViewPage<IList<Book>>" %>
    
    <% for (int i = 0; i < 3; i++) { %>
    
      <%: Html.TextBoxFor(m => m[i].Title) %>
      <%: Html.TextBoxFor(m => m[i].Author) %>
      <%: Html.TextBoxFor(m => m[i].DatePublished) %> 
    
    <% } %>

    Nesse post aqui tem a explicação detalhada:

    http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

    • Sugerido como Resposta Wennder SantosMVP terça-feira, 6 de maio de 2014 13:26
    • Marcado como Resposta dani.ela terça-feira, 6 de maio de 2014 13:31
    terça-feira, 6 de maio de 2014 02:04
    Moderador
  • Olá,

    só complementado o João. Não use for each para criar sua table na view, pois, se você quiser passar essa lista como parâmetro para o controller não vai funcionar se ela for criada com for each. Não sei porque, mas, o for each não gera o html correto, use o for comum, como mostra o exemplo do João.


    Wennder Santos

    Se solucionou seu problema ou dúvida, não esqueça de marcar como resposta. Se foi util, não esqueça de marcar como util.


    • Marcado como Resposta dani.ela terça-feira, 6 de maio de 2014 13:31
    terça-feira, 6 de maio de 2014 13:28
  • Obrigado João! deu certo!!

    terça-feira, 6 de maio de 2014 13:29
  • Obrigado Wennder Santos!

    Realmente era isso que eu estava fazendo, segui o exemplo do João e funcionou, mas, eu não sabia o porque não estava funcionando. Agora que você disse que o for each não daria certo eu entendi, eu estava usando o for each mesmo.

    Obrigado galera vocês são feras!!

    terça-feira, 6 de maio de 2014 13:31