ASP.NET MVC视图模型 - 如何在视图中显示数据?

时间:2015-06-06 01:03:03

标签: c# asp.net-mvc

我正在学习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。我该怎么做?

1 个答案:

答案 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>
}