使用视图模型填充索引视图。 EF 6,MVC 5

时间:2015-07-21 06:30:19

标签: asp.net-mvc-5 entity-framework-6 viewmodel

我真的很挣扎,我希望有人可以提供帮助(我在另一个主题上得到了很多帮助)我正在使用Entity Framework 6.1.3和MVC5。在我的ProductsController中,Index方法如下所示:

private ApplicationDbContext db = new ApplicationDbContext();

// GET: /Products/
public  ActionResult Index()
{
    var products = db.Products.Include(p => p.ProductImage);

    IEnumerable<DisplayProductsViewModel> model = products.Select(p => new DisplayProductsViewModel() 
    { 
        Id = p.ProductId,
        Name = p.ProductName, 
        Image = p.ProductImage, 
        Price = p.ProductPrice.ToString() }).ToList();

    return View(model);
}

我的 DisplayProductsViewModel 视图模型如下所示:

namespace AccessorizeForLess.ViewModels
{
    public class DisplayProductsViewModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Price { get; set; }
        public ProductImage Image { get; set; }
    }
}

我的索引视图如下:

@model IEnumerable<AccessorizeForLess.ViewModels.DisplayProductsViewModel>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">

        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Image)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>

当我在浏览器中查看时,我得到一个空页面,没有任何显示。我没有犯错,所以这是朝着正确方向迈出的一步。这是我第一次使用视图模型,当我调试模型时总是以空列表的形式返回。

我知道额外的一双眼睛有时需要什么,谁能看到我做错了什么?

修改

这是产品 EF模型

namespace AccessorizeForLess.Data
{
    using System;
    using System.Collections.Generic;

    public partial class Product
    {
        public int ProductId { get; set; }
        public int ProductImageId { get; set; }
        public string ProductName { get; set; }
        public Nullable<decimal> ProductPrice { get; set; }
        public Nullable<int> Quantity { get; set; }
        public string ProductDescription { get; set; }

        public virtual ProductImage ProductImage { get; set; }
    }
}

我将拉出视图模型并查看页面是否填充

0 个答案:

没有答案