You can submit via ViewBag , ViewData or make a class that contains the information (list, item) to be consumed in your View ( ViewModel
)
You can use any of the 3 correctly, for example, loading a Dropdownlist is very simple with ViewBag . If you are going to pass many class objects and you want to keep all this standard you can use a ViewModel that represents all these class objects.
But, I prefer to go through all the forms so that you know and use them properly ...
ViewBag
public ActionResult View(int id)
{
var objPessoa = new PessoaAplic();
var dadosPessoa = objPessoa.ListarPorId(id);
ViewBag.DadosPessoa = dadosPessoa;
var objContato = new ContatoAplic();
var dadosContato = objContato.ListarPorId(dadosPessoa.IdPessoa);
ViewBag.DadosContato = dadosContato;
return View();
}
ViewData
public ActionResult View(int id)
{
var objPessoa = new PessoaAplic();
var dadosPessoa = objPessoa.ListarPorId(id);
ViewData.Add("DadosPessoa",dadosPessoa);
var objContato = new ContatoAplic();
var dadosContato = objContato.ListarPorId(dadosPessoa.IdPessoa);
ViewData.Add("DadosContato",dadosContato);
return View();
}
ViewModel
Class responsible for trafficking both information:
public class ViewModel
{
public ViewModel(PessoaAplic pessoa, ContatoAplic contato)
{
Pessoa = pessoa;
Contato = contato;
}
public PessoaAplic Pessoa { get; private set; }
public ContatoAplic Contato { get; private set; }
}
Solution inside the Controller
public ActionResult View(int id)
{
var objPessoa = new PessoaAplic();
var dadosPessoa = objPessoa.ListarPorId(id);
var objContato = new ContatoAplic();
var dadosContato = objContato.ListarPorId(dadosPessoa.IdPessoa);
ViewModel viewModel = new ViewModel(dadosPessoa, dadosContato);
return View(viewModel);
}
Views:
ViewBag
@{
Layout = null;
WebApplication2.Models.PessoaAplic Pessoa = (WebApplication2.Models.PessoaAplic)ViewBag.DadosPessoa;
WebApplication2.Models.ContatoAplic Contato = (WebApplication2.Models.ContatoAplic)ViewBag.DadosContato;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>View</title>
</head>
<body>
<div>
</div>
</body>
</html>
ViewData
@{
Layout = null;
WebApplication2.Models.PessoaAplic Pessoa = (WebApplication2.Models.PessoaAplic)ViewData["DadosPessoa"];
WebApplication2.Models.ContatoAplic Contato = (WebApplication2.Models.ContatoAplic)ViewData["DadosContato"];
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>View</title>
</head>
<body>
<div>
</div>
</body>
</html>
ViewModel
@model WebApplication2.Models.ViewModel
@{
Layout = null;
WebApplication2.Models.PessoaAplic Pessoa = Model.Pessoa;
WebApplication2.Models.ContatoAplic Contato = Model.Contato;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>View</title>
</head>
<body>
<div>
</div>
</body>
</html>