我需要以数据库中两个不同模型的列表形式将数据发送到MVC4项目中的视图。
这样的事情:
的控制器 :
public ActionResult Index()
{
Entities db = new Entities();
ViewData["Cats"] = db.Cats.toList();
ViewData["Dogs"] = db.Dogs.toList();
return View();
}
查看 :
@* 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>
视图显示两个列表,每个模型一个列表。
我不确定最有效的方法是什么?
视图模型?
可视数据/ Viewbag?
还有别的吗?
(请不要第三方建议)
的更新 :
此外,我已经尝试了一个多小时来实现建议List<T>
Viewmodel没有任何运气的答案。我相信这是因为我的Viewmodel看起来像这样:
public class GalleryViewModel
{
public Cat cat { get; set; }
public Dog dog { get; set; }
}
答案 0 :(得分:7)
尝试解释您的问题和目标,因此我们(特别)知道您要做的事情。
我认为这意味着您有两个列表,并且您希望将它们发送到视图。一种方法是将两个列表放入模型并将模型发送到视图,但您似乎已经指定您已经有两个模型,所以我将采用这种假设。
<强>控制器强>
public ActionResult Index()
{
ModelA myModelA = new ModelA();
ModelB myModelB = new ModelB();
IndexViewModel viewModel = new IndexViewModel();
viewModel.myModelA = myModelA;
viewModel.myModelB = myModelB;
return View(viewModel);
}
查看模型
public class IndexViewModel
{
public ModelA myModelA { get; set; }
public ModelB myModelB { get; set; }
}
<强>模型强>
public class ModelA
{
public List<String> ListA { get; set; }
}
public class ModelB
{
public List<String> ListB { get; set; }
}
查看强>
@model IndexViewModel
@foreach (String item in model.myModelA)
{
@item.ToString()
}
(抱歉,如果我的C#生锈了)