2015-06-06 143 views
0

我正在学习ASP.NET MVC,看起来ViewModels是将数据从Controller传递到View的推荐方式,并允许在View中使用多个Model。因此,我已经创建ProductViewModel它具有如下:ASP.NET MVC视图模型 - 如何在视图中显示数据?

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); 

,我有被遍历该数据视图的问题。我可以用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

创造一个产品描述这样DisplayTemplate的DisplayFor为ProductDescriptions应当制定 –

+0

你能提供这方面的一个例子吗?就像我说过的,我对这个完全陌生,以前从来没有听说过DisplayTemplate! :) – user9993

+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> 
} 
相关问题