Potrzebuję wysłać dane w formie listy dla dwóch różnych modeli w mojej bazie danych do widoku w projekcie MVC4.MVC4 ViewBag lub ViewModel lub?
coś takiego:
Controller:
public ActionResult Index()
{
Entities db = new Entities();
ViewData["Cats"] = db.Cats.toList();
ViewData["Dogs"] = db.Dogs.toList();
return View();
}
Zobacz:
@* 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>
Widok jest wyświetlanie dwóch list, w jednej listy za model.
Nie jestem pewien, jaki jest najskuteczniejszy sposób na zrobienie tego?
Viewmodel?
Viewdata/Viewbag?
Coś jeszcze?
(sugestie proszę nie osób trzecich)
UPDATE:
Dalsze Mam próbował ponad godzinę teraz wdrożyć odpowiedzi sugerujące List<T>
ViewModel bez powodzenia. Wierzę, że jest to spowodowane faktem, że mój ViewModel wygląda następująco:
public class GalleryViewModel
{
public Cat cat { get; set; }
public Dog dog { get; set; }
}
Dzięki @row Próbowałam dostać się to do pracy, ale nie wydaje się rysunek. Najwyraźniej problem polega na tym, że mój ViewModel nie składa się z 'List' raczej rzeczywistego typu modelu, np. 'Public ListA listA {get; zestaw; } '. Zamierzam zaktualizować mój pierwszy wpis, aby to odzwierciedlić. –
Zajęło chwilę, ale mam to! Dziękuję Rowan. –