Ich muss Daten in Form einer Liste für zwei verschiedene Modelle in meiner Datenbank an eine Ansicht in einem MVC4-Projekt senden.MVC4 ViewBag oder ViewModel oder?
Etwas wie folgt aus:
-Controller:
public ActionResult Index()
{
Entities db = new Entities();
ViewData["Cats"] = db.Cats.toList();
ViewData["Dogs"] = db.Dogs.toList();
return View();
}
Ansicht:
@* 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>
Die Ansicht ist zwei der Liste angezeigt werden, eine Liste pro Modell.
Ich bin unsicher, was der effizienteste Weg ist, dies zu tun?
Viewmodel?
Viewdata/Viewbag?
Etwas anderes? die Antwort zu implementieren was auf eine List<T>
Ansichtsmodell ohne Erfolg
Weitere denn ich habe jetzt mehr als eine Stunde versucht:
(Bitte keine Drittanbieter-Vorschläge)
UPDATE. Ich glaube, dass dies auf die Tatsache zurückzuführen ist, dass mein Ansichtsmodell wie folgt aussieht:
public class GalleryViewModel
{
public Cat cat { get; set; }
public Dog dog { get; set; }
}
Dank @row ich das zu bekommen habe versucht zu arbeiten, aber ich kann es nicht herausgefunden scheinen. Offensichtlich besteht das Problem darin, dass mein ViewModel nicht aus "List" besteht, sondern aus dem tatsächlichen Modelltyp, z. B. 'public ListA listA {get; einstellen; } '. Ich werde meinen ursprünglichen Beitrag aktualisieren, um dies zu reflektieren. –
dauerte eine Weile, aber ich habe es! Danke Rowan. –