none
Como criar controller e view de relacionamento de 1:N RRS feed

  • Pergunta

  • Boa noite.

    Tenho aqui 2 tabelas, banco que corresponde a id e Nome, e dados bancários que corresponde a id, idBanco, conta e Agencia.

    Como faço pra criar o controller e as views de contatoBancario e dadosBancarios que busquem uma lista ja cadastrada de bancos??

    Obrigado.

    quarta-feira, 4 de julho de 2012 02:06

Respostas

  • Seu model 'ContatoBancario' não possui uma propriedade 'ICollection<Banco>' ?

    Dá uma olhada neste link: http://buildstarted.com/2010/08/27/entity-framework-with-many-to-many-one-to-many-and-one-to-one-relationships/

    Olha como é feito um relacionamento one to many.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze quarta-feira, 4 de julho de 2012 02:24
    • Sugerido como Resposta Wilian NS quarta-feira, 4 de julho de 2012 10:55
    • Marcado como Resposta Kakashi963 sexta-feira, 6 de julho de 2012 00:19
    quarta-feira, 4 de julho de 2012 02:23
  • Hmm cara não tenho o ICollection, consegui resolver com isso na view:

    <div class="editor-field">
               @* @Html.DropDownList("Banco", "Selecione um Banco...")*@
                @Html.DropDownListFor(model => model.IdBanco, new SelectList((new Sacer.Models.SacerContext()).banco.ToList(), "IdBanco", "Nome"), "Selecione um banco...")
                @Html.ValidationMessageFor(model => model.banco.IdBanco)
            </div>

    Mas agora, estou pensando em uma nova possibilidade.

    Na minha view para cadastro de banco, como colocar logo abaixo as views para ja cadastrar Banco, depois contatosBancários e dadosBancários?


    • Marcado como Resposta Kakashi963 sexta-feira, 6 de julho de 2012 00:19
    quarta-feira, 4 de julho de 2012 14:56
  • Parece que sua dúvida é como carregar o banco e seus respectivos "filhos" para exibir na view ou no cadastro.

    Segue um exemplo de como carregar os dados relacionados usando "Include":

    var listaBancos = (from c in _entities.Banco.Include("DadosBancario").Include("ContatoBancario") select c).ToList();

    No seu controller basta retornar o model Banco para a View:

    public ActionResult ListaBancos()
    {
        var listaBancos = ... ;
        return View(listaBancos)
    }

    Na view você então lista os bancos e respectivas entidades relacionadas:

    @model IEnumrable<SeuNamespace.Banco>foreach(var item in Model)
    {
        @Html.Encode(nome)
        foreach(var itemDados in item.DadosBancario)
        {
            <!-- lista os dadosbancarios -->
        }    
    
        foreach(var itemContato in item.ContatoBancario)
        {
            <!-- lista os contatos-->
        }        
    }

    • Marcado como Resposta Kakashi963 sexta-feira, 6 de julho de 2012 00:19
    quarta-feira, 4 de julho de 2012 21:44
    Moderador

Todas as Respostas

  • Você quer saber como buscar o banco a partir de 'ContatoBancario'? É isso?

    Está usando algum framework para acesso ao banco?


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 4 de julho de 2012 02:10
  • Exatamente! estou utilizando apenas o Entity framework.
    quarta-feira, 4 de julho de 2012 02:18
  • Seu model 'ContatoBancario' não possui uma propriedade 'ICollection<Banco>' ?

    Dá uma olhada neste link: http://buildstarted.com/2010/08/27/entity-framework-with-many-to-many-one-to-many-and-one-to-one-relationships/

    Olha como é feito um relacionamento one to many.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze quarta-feira, 4 de julho de 2012 02:24
    • Sugerido como Resposta Wilian NS quarta-feira, 4 de julho de 2012 10:55
    • Marcado como Resposta Kakashi963 sexta-feira, 6 de julho de 2012 00:19
    quarta-feira, 4 de julho de 2012 02:23
  • Hmm cara não tenho o ICollection, consegui resolver com isso na view:

    <div class="editor-field">
               @* @Html.DropDownList("Banco", "Selecione um Banco...")*@
                @Html.DropDownListFor(model => model.IdBanco, new SelectList((new Sacer.Models.SacerContext()).banco.ToList(), "IdBanco", "Nome"), "Selecione um banco...")
                @Html.ValidationMessageFor(model => model.banco.IdBanco)
            </div>

    Mas agora, estou pensando em uma nova possibilidade.

    Na minha view para cadastro de banco, como colocar logo abaixo as views para ja cadastrar Banco, depois contatosBancários e dadosBancários?


    • Marcado como Resposta Kakashi963 sexta-feira, 6 de julho de 2012 00:19
    quarta-feira, 4 de julho de 2012 14:56
  • Evite fazer isso!

    Sua view jamais pode depender do seu banco de dados.

    Dá uma lida sobre mvvm.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 4 de julho de 2012 15:32
  • Certo, oq estou pensando em fazer pra ter uma view com os 3 cadastros, é criar uma partial view, onde eu posso chamar os cadastros que desejo.

    Entretanto, eu sei que preciso criar uma classe que represente o model a ser utilizado, mas como coloco meu banco ali?

    Obrigado

    quarta-feira, 4 de julho de 2012 19:42
  • Parece que sua dúvida é como carregar o banco e seus respectivos "filhos" para exibir na view ou no cadastro.

    Segue um exemplo de como carregar os dados relacionados usando "Include":

    var listaBancos = (from c in _entities.Banco.Include("DadosBancario").Include("ContatoBancario") select c).ToList();

    No seu controller basta retornar o model Banco para a View:

    public ActionResult ListaBancos()
    {
        var listaBancos = ... ;
        return View(listaBancos)
    }

    Na view você então lista os bancos e respectivas entidades relacionadas:

    @model IEnumrable<SeuNamespace.Banco>foreach(var item in Model)
    {
        @Html.Encode(nome)
        foreach(var itemDados in item.DadosBancario)
        {
            <!-- lista os dadosbancarios -->
        }    
    
        foreach(var itemContato in item.ContatoBancario)
        {
            <!-- lista os contatos-->
        }        
    }

    • Marcado como Resposta Kakashi963 sexta-feira, 6 de julho de 2012 00:19
    quarta-feira, 4 de julho de 2012 21:44
    Moderador