Ho bisogno di inviare dati sotto forma di elenco per due diversi modelli nel mio database a una vista in un progetto MVC4.MVC4 ViewBag o ViewModel o?
Qualcosa di simile a questo:
controller:
public ActionResult Index()
{
Entities db = new Entities();
ViewData["Cats"] = db.Cats.toList();
ViewData["Dogs"] = db.Dogs.toList();
return View();
}
Vista:
@* LIST ONE *@
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.ListOneColOne)
</th>
<th>
@Html.DisplayNameFor(model => model.ListOneColTwo)
</th>
<th>
@Html.DisplayNameFor(model => model.ListOneColThree)
</th>
</tr>
@foreach (var item in @ViewData["Cats"]) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ListOneColOne)
</td>
<td>
@Html.DisplayFor(modelItem => item.ListOneColTwo)
</td>
<td>
@Html.DisplayFor(modelItem => item.ListOneColThree)
</td>
</tr>
@* LIST TWO *@
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.ListTwoColOne)
</th>
<th>
@Html.DisplayNameFor(model => model.ListTwoColTwo)
</th>
<th>
@Html.DisplayNameFor(model => model.ListTwoColThree)
</th>
</tr>
@foreach (var item in @ViewData["Dogs"]) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ListTwoColOne)
</td>
<td>
@Html.DisplayFor(modelItem => item.ListTwoColTwo)
</td>
<td>
@Html.DisplayFor(modelItem => item.ListTwoColThree)
</td>
</tr>
La vista è quello di visualizzare, una lista di due lista per modello.
Non sono sicuro di quale sia il modo più efficiente per farlo?
Viewmodel?
Viewdata/Viewbag?
Qualcos'altro?
(suggerimenti Si prega di non di terze parti)
UPDATE:
Inoltre ho tentato per più di un'ora oggi per implementare la risposta suggerendo un List<T>
ViewModel senza alcuna fortuna. Credo che questo sia dovuto al fatto che il mio ViewModel assomiglia a questo:
public class GalleryViewModel
{
public Cat cat { get; set; }
public Dog dog { get; set; }
}
Grazie @row ho cercato di ottenere questo lavoro, ma io non riesco a capirlo. Apparentemente il problema è che il mio ViewModel non è composto da 'Lista' piuttosto il tipo di modello effettivo ad es., 'Lista pubblicaA listaA {get; impostato; } '. Ho intenzione di aggiornare il mio post iniziale per riflettere questo. –
Ci ho messo un po 'ma l'ho capito! Grazie Rowan. –