Usuário com melhor resposta
Dúvida de multipla Classes na mesma View ?

Pergunta
-
Boa tarde sou iniciante em MVC e estou com dúvidas quanto ao padrão. Pois pelo que li a View tem o trabalho de apresentar a informação, porém por padrão cada View tem seu Model gerador de si. Então tenho dúvidas se o modo como estou fazendo está correto.
Vejam o código abaixo para apresentação de dados de 2 classes na mesma View apenas para exemplo :
Pai :
namespace MVCEstudo.Models { public class Pai { public int IdPai { get; set; } public string NomePai { get; set; } public Pai() { IdPai = int.MinValue; NomePai = null; } } }
Filho :
namespace MVCEstudo.Models { public class Filho { public int IdFilho { get; set; } public int IdPai { get; set; } public string NomeFilho { get; set; } public Filho() { IdFilho = int.MinValue; IdPai = int.MinValue; NomeFilho = null; } } }
Familia :
namespace MVCEstudo.Models { public class Familia { public List<Pai> Pai { get; set; } public List<Filho> Filho { get; set; } } }
Controller Familia :
namespace MVCEstudo.Controllers { public class FamiliaController : Controller { // // GET: /Familia/ public ActionResult Index() { MVCEstudo.Models.Pai Pai = new Models.Pai(); List<MVCEstudo.Models.Pai> ListaPai = new List<Models.Pai>(); Pai.IdPai = 1; Pai.NomePai = "Márcio"; ListaPai.Add(Pai); Pai = null; Pai = new Models.Pai(); Pai.IdPai = 2; Pai.NomePai = "José"; ListaPai.Add(Pai); Pai = null; Pai = new Models.Pai(); Pai.IdPai = 3; Pai.NomePai = "Daniel"; ListaPai.Add(Pai); Pai = null; Pai = new Models.Pai(); // ViewData["ListaPai"] = ListaPai; MVCEstudo.Models.Filho Filho = new Models.Filho(); List<MVCEstudo.Models.Filho> ListaFilho = new List<Models.Filho>(); Filho.IdFilho = 1; Filho.IdPai = 1; Filho.NomeFilho = "Davi"; ListaFilho.Add(Filho); Filho = null; Filho = new Models.Filho(); Filho.IdFilho = 2; Filho.IdPai = 1; Filho.NomeFilho = "Michel"; ListaFilho.Add(Filho); Filho = null; Filho = new Models.Filho(); // ViewData["ListaFilho"] = ListaFilho; MVCEstudo.Models.Familia P = new Models.Familia(); P.Pai = ListaPai; P.Filho = ListaFilho; return View(P); } } }
View Familia :
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2> <br /> <h1>Lista Pai | Filho : </h1> <ul> @foreach (var P in Model.Pai) { <li> @P.NomePai </li> } </ul> <hr /> <ul> @foreach (var F in Model.Filho) { <li> @F.NomeFilho </li> } </ul>
Minha pergunta é está correto fazer dessa forma ? Estou Quebrando o padrão MVC ?
Outra questão como poderia melhorar a minha solução (código) ?
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br
Respostas
-
É que o codigo está em verde veja :
@foreach (var P in Model.Pai)
{
<li> @P.NomePai </li>
}
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.brah, kkkk estou tão acostumado com verde sendo comentário na view que eu pulo ahurahruahruahruahruarhuahruarh
desculpa;
analisando apenas a view, não tem nada de errado não, segue um exemplo semelhante pra você ver...
<fieldset> <legend>Fields</legend> <div class="editor-label"> <%: Html.LabelFor(model => model.Id) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Id) %> <%: Html.ValidationMessageFor(model => model.Id) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Title) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Title) %> <%: Html.ValidationMessageFor(model => model.Title) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.ReleaseDate) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.ReleaseDate) %> <%: Html.ValidationMessageFor(model => model.ReleaseDate) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Genre) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Genre) %> <%: Html.ValidationMessageFor(model => model.Genre) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Price) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Price) %> <%: Html.ValidationMessageFor(model => model.Price) %> </div> <p> <input type="submit" value="Create" /> </p> </fieldset>
Aprendendo Ad Eternum
- Marcado como Resposta Davi Murilo quarta-feira, 9 de janeiro de 2013 18:12
Todas as Respostas
-
-
É que o codigo está em verde veja :
@foreach (var P in Model.Pai)
{
<li> @P.NomePai </li>
}
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br -
É que o codigo está em verde veja :
@foreach (var P in Model.Pai)
{
<li> @P.NomePai </li>
}
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.brah, kkkk estou tão acostumado com verde sendo comentário na view que eu pulo ahurahruahruahruahruarhuahruarh
desculpa;
analisando apenas a view, não tem nada de errado não, segue um exemplo semelhante pra você ver...
<fieldset> <legend>Fields</legend> <div class="editor-label"> <%: Html.LabelFor(model => model.Id) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Id) %> <%: Html.ValidationMessageFor(model => model.Id) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Title) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Title) %> <%: Html.ValidationMessageFor(model => model.Title) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.ReleaseDate) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.ReleaseDate) %> <%: Html.ValidationMessageFor(model => model.ReleaseDate) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Genre) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Genre) %> <%: Html.ValidationMessageFor(model => model.Genre) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Price) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Price) %> <%: Html.ValidationMessageFor(model => model.Price) %> </div> <p> <input type="submit" value="Create" /> </p> </fieldset>
Aprendendo Ad Eternum
- Marcado como Resposta Davi Murilo quarta-feira, 9 de janeiro de 2013 18:12
-
Ok Obrigado pela resposta.
Fico preocupado em quebrar padrões e fazer gambiarras quando na verdade existe um modo mais simples e tecnicamente mais adequado.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br