Inquiridor
Utilizar 2 tabelas dentro da mesma view

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>
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.
-
-
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 -
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