我想知道是否有办法将超过1个列表传递给要渲染的视图。
这是我在PeopleController中的代码
public ActionResult Index()
{
EmployeeContext db = new EmployeeContext();
//Sites
List<SelectListItem> listSelectListItem = new List<SelectListItem>();
foreach (Sites loc in db.Locations)
{
SelectListItem selectListItem = new SelectListItem()
{
Text = loc.HRSite,
Value = loc.HRSite
};
listSelectListItem.Add(selectListItem);
}
SiteViewModel siteViewModel = new SiteViewModel();
siteViewModel.Sites = listSelectListItem;
//Cost Centers
List<SelectListItem> listSelectListItem2 = new List<SelectListItem>();
foreach (CostCenter cc in db.CostCenterNumbers)
{
SelectListItem selectListItem = new SelectListItem()
{
Text = cc.CostCenterNumber,
Value = cc.CostCenterNumber
};
listSelectListItem2.Add(selectListItem);
}
CCViewModel ccViewModel = new CCViewModel();
ccViewModel.CostCenter = listSelectListItem2;
List<object> myModel = new List<object>();
myModel.Add(siteViewModel);
myModel.Add(ccViewModel);
return View(myModel);
这是我的观点:
@model IEnumerable<object>
@{
List<MVCDemo.Models.CostCenter> lstCostCenter = Model.ToList()[0] as List<MVCDemo.Models.CostCenter>;
List<MVCDemo.Models.Sites> lstLocation = Model.ToList()[1] as List<MVCDemo.Models.Sites>;
}
<h3>Cost Center</h3>
<ul>
@foreach (var item in lstCostCenter)
{
<li>@item.CostCenterNumber</li>
}
</ul>
<hr />
<h3>Site</h3>
<ul>
@foreach (var item in lstLocation)
{
<li>@item.HRSite</li>
}
</ul>
如何更改视图以包含2个列表框而不是2&#34;列表&#34;?
答案 0 :(得分:0)
创建一个包含每个列表集合的具体视图。
然后为您的每个收藏品使用
@Html.ListboxFor(m => m.YourCollection)
答案 1 :(得分:0)
我建议您创建一个ViewModel来保存您的数据。简单地传递“对象”就更方便了。它有很多好处,一个是你可以在剃刀中使用强类型的html助手。 然后您可以将@ Html.ListboxFor用作suggested by dan m