Veritabanımdaki iki farklı model için bir liste şeklinde bir MVC4 projesindeki bir görünüme veri göndermem gerekiyor. BöyleMVC4 ViewBag veya ViewModel veya?
şey:
Kontrolör:
public ActionResult Index()
{
Entities db = new Entities();
ViewData["Cats"] = db.Cats.toList();
ViewData["Dogs"] = db.Dogs.toList();
return View();
}
Görünüm:
@* 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>
Görünüm iki listenin bir listesini görüntülemek için model başına.
Bunun için en etkili yolun ne olduğundan emin değilim?
Viewmodel?
Viewdata/Viewbag?
Başka bir şey?
(Lütfen hiçbir üçüncü parti önerileri)GÜNCELLEME: Daha ben bir saatten fazla teşebbüs ettik
şimdi olmadan herhangi bir şans bir List<T>
ViewModel düşündüren cevabı uygulamaktır. Bu benim ViewModel şöyle görünür olmasından kaynaklanmaktadır inanıyoruz:
public class GalleryViewModel
{
public Cat cat { get; set; }
public Dog dog { get; set; }
}
teşekkürler. Görünen o ki, ViewModel'im 'List' listesinden değil, gerçek model türü ör., 'Public ListA listA {get; set; } '. İlk yazımı bunu yansıtmak için güncelleyeceğim. –
Bir süre aldı ama anladım! Teşekkürler Rowan. –