我正在学习ASP.NET MVC,似乎ViewModels是将数据从Controller传递到View并允许在View中使用多个Model的推荐方法。因此,我创建了具有以下内容的ProductViewModel:
public IEnumerable<Product> Products { get; set; }
public IEnumerable<ProductCategory> ProductCategories { get; set; }
public IEnumerable<ProductDescription> ProductDescriptions { get; set; }
在我的控制器中我有:
ProductViewModel productViewModel = new ProductViewModel();
productViewModel.Products = db.Products.ToList();
productViewModel.ProductDescription = db.ProductDescription.ToList();
return View(productViewModel);
我遇到的问题是在View中循环显示这些数据。我可以使用foreach
来迭代例如Products
,但我不知道如何将其与ProductDescription
结合使用:
@model Site.ViewModels.ProductListingViewModel
@foreach (var item in Model.Products)
{
<tr>
<td>
@Html.DisplayFor(m => item.Name)
</td>
<td>
@Html.DisplayFor(m => item.ProductID)
</td>
<td>
@Html.DisplayFor(m => item.Color)
</td>
<td>
@Html.DisplayFor(m => item.Description???) - What do I actually need to write?
</td>
</tr>
}
由于“描述”列位于ProductDescription
,因此item.Description
无法简单地访问该列,因为item
具体指的是Products
。我该怎么做?
答案 0 :(得分:0)
在这些情况下,我更喜欢循环。为什么不用于循环?
@for (int i=0;i<Products.Count;i++)
{
<tr>
<td>
@Html.DisplayFor(m => Products[i].Name)
</td>
<td>
@Html.DisplayFor(m => ProductDescription[i].Description)
</td>
</tr>
}