【发布时间】:2011-08-24 19:27:51
【问题描述】:
我将以下代码用于包含两个数据列表的主视图模型,
namespace trsDatabase.Models
{
public class masterViewModel
{
public IEnumerable <Customer> Customers { get; set; }
public IEnumerable <CustomerSite> CustomerSites { get; set; }
}
}
我正在使用以下代码将 veiwmodel 传递给视图,
public ViewResult Index()
{
masterViewModel sitesModel = new masterViewModel();
return View(sitesModel);
}
那么在我看来,我有以下几点,
@model IEnumerable<trsDatabase.Models.masterViewModel>
foreach (var site in customer.CustomerSites)
{
foreach (var cust in customer.Customers)
{
<tr>
<td>
@cust.CustomerName
</td>
<td>
@site.UnitNo
</td>
使用上面的代码,我可以访问视图模型中两个列表中的所有属性,但是当我导航到视图时,我得到一个错误,因为视图需要一个 IEnumerable。如果我将声明更改为仅传递视图模型
@model trsDatabase.Models.masterViewModel
foreach 语句不起作用,它给出了这个错误
传入字典的模型项的类型为“trsDatabase.Models.masterViewModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[trsDatabase.Models.masterViewModel]”的模型项。
谁能提供任何建议或指出正确的方向来解决这个问题,是否可以使我的视图模型 IEnumerable?
【问题讨论】:
-
在一个不相关的注释中,您拥有这些嵌套循环的方式,您会发现同一个客户在每个站点上显示多次。我的猜测是 CustomerSite 和 Customer 以某种方式相关,您希望在 CustomerSite.Customers 上使用导航属性/集合,或者将其展平。
标签: c# asp.net-mvc model viewmodel