我真的很挣扎,我希望有人可以提供帮助(我在另一个主题上得到了很多帮助)我正在使用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; }
}
}
我将拉出视图模型并查看页面是否填充