Tôi cần gửi dữ liệu dưới dạng danh sách cho hai mô hình khác nhau trong cơ sở dữ liệu của tôi đến chế độ xem trong dự án MVC4.MVC4 ViewBag hoặc ViewModel hoặc?
Something như thế này:
khiển:
public ActionResult Index()
{
Entities db = new Entities();
ViewData["Cats"] = db.Cats.toList();
ViewData["Dogs"] = db.Dogs.toList();
return View();
}
Xem:
@* 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>
The View là để hiển thị, một danh sách hai danh sách của cho mỗi mô hình.
Tôi không chắc chắn về cách thức hiệu quả nhất để thực hiện việc này là gì?
ViewModel?
Chế độ xem/Viewbag?
Cái gì khác?
(gợi ý hãy không có bên thứ ba)
CẬP NHẬT:
Hơn nữa tôi đã cố gắng trong hơn một giờ tại để thực hiện các câu trả lời gợi ý một ViewModel List<T>
mà không cần bất kỳ may mắn. Tôi tin rằng điều này là do thực tế là ViewModel của tôi trông như thế này:
public class GalleryViewModel
{
public Cat cat { get; set; }
public Dog dog { get; set; }
}
Cảm ơn @row Tôi đã cố gắng để có được điều này để làm việc nhưng tôi dường như không thể hình dung nó ra. Rõ ràng vấn đề là ViewModel của tôi không bao gồm 'Danh sách' thay vì loại mô hình thực tế, ví dụ: 'danh sách công khaiA listA {get; bộ; } '. Tôi sẽ cập nhật bài viết đầu tiên của tôi để phản ánh điều này. –
Mất một lúc nhưng tôi đã hiểu! Cảm ơn Rowan. –