【发布时间】:2011-05-12 15:21:23
【问题描述】:
我有一个主视图模型,以下两个列表来自两个不同的数据库表,
public IEnumerable <Customer> SomeCustomer { get; set; }
public IEnumerable <CustomerSite> CustomerSites { get; set; }
在我的控制器中
public ViewResult Index()
{
masterViewModel sitesModel = new masterViewModel();
return View(sitesModel);
}
然后在我看来我写
@model IEnumerable<trsDatabase.Models.masterViewModel>
如果我尝试使用 for each 语句访问模型
@foreach (var customer in Model)
当我输入@customer 时。它只会让我访问两个列表,而不是列表中的单个属性。
我认为我可以使用例如
@customer.CustomerSites.UnitNo
但我能走的最远是
@customer.CustomerSites
这显然不会让我访问列表中的各个属性
有人对我在这里做错了什么有任何想法吗?我需要从控制器中的视图模型中定义属性吗? (我认为不是)
更新
我的视图模型中有以下代码,
namespace trsDatabase.Models
{
public class masterViewModel
{
public IEnumerable <Customer> Customers { get; set; }
public IEnumerable <CustomerSite> CustomerSites { get; set; }
}
}
然后在控制器中如下,
public ViewResult Index()
{
masterViewModel sitesModel = new masterViewModel();
return View(sitesModel);
}
然后我将视图声明更改为
@model trsDatabase.Models.masterViewModel
这使我可以完美地从视图访问属性,但是它会在 foreach 循环中引发错误,因为当视图继承模型而不是 Ienumerable 列表时无法使用它,我是否需要更改在视图中呈现列表并使用除 foreachloop 之外的其他内容的语法?
【问题讨论】:
标签: asp.net-mvc viewmodel ienumerable