none
Utilizar 2 tabelas dentro da mesma view RRS feed

  • Pergunta

  • Bom dia

    eu tenho essas 2 classes q representa 2 tabelas do meu banco

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel.DataAnnotations;
    
    namespace TestaDAO
    {
        public class Endereco
        {
            [Key]
            public virtual int id_endereco { get; set; }
            public virtual int id_pessoa { get; set; }
            public virtual string logradouro { get; set; }
            public virtual int numero { get; set; }
            public virtual string complemento { get; set; }
            public virtual string cep { get; set; }
            public virtual int id_cidade { get; set; }
            public virtual Pessoa pessoa { get; set; }
            public virtual Endereco endereco { get; set; }
        }
    }
    

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel.DataAnnotations;
    
    namespace TestaDAO
    {
        public class Pessoa
        {
            [Key]
            public virtual int id_pessoa { get; set; }
            public virtual string nome_pessoa { get; set; }
            public virtual string fone { get; set; }
            public virtual string email { get; set; }
            public virtual string senha { get; set; }
            public virtual DateTime dt_cadastro { get; set; }
        }
    }
    


    como faço pra utilizar essas 2 tabelas dentro da mesma view, quero utiliza elas nessa view

    @model TestaDAO.Pessoa
    @{
        ViewBag.Title = "CriarAdministrador";
    }
    <div class="top-bar">
        <h1>
            Novo Administrador</h1>
        <br />
        <br />
        @using (Html.BeginForm("CriarAdministrador", "Usuarios"))
        {
            <div>
                <fieldset>
                    <legend>Informações</legend>
                    <br />
                    <strong>@Html.LabelFor(model => model.nome_pessoa)</strong>
                    <br />
                    @Html.TextBoxFor(model => model.nome_pessoa)
                    <br />
                    <br />
                    <strong>@Html.LabelFor(model => model.fone)</strong>
                    <br />
                    @Html.TextBoxFor(model => model.fone)
                    <br />
                    <br />
                    <strong>@Html.LabelFor(model => model.email)</strong>
                    <br />
                    @Html.TextBoxFor(model => model.email)
                    <br />
                    <br />
                    <strong>@Html.LabelFor(model => model.senha)</strong>
                    <br />
                    @Html.PasswordFor(model => model.senha)
                    <br />
                    <br />
                </fieldset>
            </div>
            <div>
                <fieldset>
                    <legend>Endereço</legend>
                </fieldset>
            </div>
            <input type="submit" value="Salvar" />
        }
    </div>
    
    


    sexta-feira, 9 de setembro de 2011 13:20

Todas as Respostas

  • @Html.TextBox("logradouro")
    @Html.TextBox("complemento")

     @Html.TextBox("numero")

    ....

     

    dai no controller na acao q tiver recebendo as informacoes vc pode por

    [Http.Post]

    public ActionResult criarAdministrador(Pessoa p, Endereco end)

    {

    }

     

    nao sei se tem um modo mais facil, mais assim acho q da certo.

    sexta-feira, 9 de setembro de 2011 14:53
  • baum pelo q andei lendo vo tem fz

    um ViewModel

    mais to com duvidas d como eu crio e chamo essas duas classses pra dentro desse ViewModel

    sexta-feira, 9 de setembro de 2011 16:17
  • criei um ViewModel ela esta assim

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using TestaDAO;
    
    namespace Teste.ViewModels
    {
        public class FormularioAdmViewModel
        {
            public Pessoa pessoa { get; set; }
            public Endereco endereco { get; set; }
        }
    }
    


    e meu controller esta assim

     [HttpPost]
            public ActionResult CriarAdministrador(Pessoa pessoa, Endereco endereco)
            {
                pessoa.dt_cadastro = DateTime.Now;
                if (ModelState.IsValid)
                {
                    var pe = new PessoaDAO();
                    var end = new EnderecoDAO();
                    pe.Adicionar(pessoa);
                    end.Adicionar(endereco);
                    pe.SalvarAlteracao();
                    end.SalvarAlteracao();
                    return RedirectToAction("Administradores");
                }
                return View(new FormularioAdmViewModel { pessoa = pessoa, endereco = endereco });
            }
    


    e minah view esta assim

    @model TestaDAO.Pessoa
    @{
        ViewBag.Title = "CriarAdministrador";
    }
    <div class="top-bar">
        <h1>
            Novo Administrador</h1>
        <br />
        <br />
        @using (Html.BeginForm("CriarAdministrador", "Usuarios"))
        {
            <div>
                <fieldset>
                    <legend>Informações</legend>
                    <br />
                    <strong>@Html.LabelFor(model => model.nome_pessoa)</strong>
                    <br />
                    @Html.TextBoxFor(model => model.nome_pessoa)
                    <br />
                    <br />
                    <strong>@Html.LabelFor(model => model.fone)</strong>
                    <br />
                    @Html.TextBoxFor(model => model.fone)
                    <br />
                    <br />
                    <strong>@Html.LabelFor(model => model.email)</strong>
                    <br />
                    @Html.TextBoxFor(model => model.email)
                    <br />
                    <br />
                    <strong>@Html.LabelFor(model => model.senha)</strong>
                    <br />
                    @Html.PasswordFor(model => model.senha)
                    <br />
                    <br />
                </fieldset>
            </div>
            <div>
                <fieldset>
                    <legend>Endereço</legend>
                    <br />
                    <strong>@Html.Label("Logradouro")</strong>
                    <br />
                    @Html.TextBox("Logradouro")
                    <br />
                    <br />
                    <strong>@Html.Label("Número")</strong>
                    <br />
                    @Html.TextBox("Número")
                </fieldset>
            </div>
            <input type="submit" value="Salvar" />
        }
    </div>
    
    

    esta certo isso? como faço pra chamar o ViewModel dentro da View pra eu poder usar ela

    sexta-feira, 9 de setembro de 2011 17:08
  • Passei por esse mesmo problema a solução é criar uma ViewModel ou uma partial view veja como é explicado no link abaixo, acho bem melhor assim.

    http://francorobles.wordpress.com/2011/05/03/returning-multiple-models-in-1-view-in-asp-net-mvc3/

    =D


    quarta-feira, 24 de julho de 2013 02:50