我正在挑战自己制作一个小型网上商店,但在我的数据库中存储订单时遇到问题。产品的商店清单数据库
这是我的Order类
[Key]
public int Id { get; set; }
public IEnumerable<BasketProduct> BasketProducts { get; set; }
public string UserName { get; set; }
存储BasketProducts(不INT标识,它不想工作,但我不知道为什么需要它)
public int Id { get; set; }
public Product Product { get; set; }
public int Quantity { get; set; }
在BasketController,如果用户点击结帐,我想创建一个订单并将其放入数据库中
public ActionResult CreateOrder()
{
//GetCurrentBasket returns a basket of current session
var baskItems = GetCurrentBasket().Items;
Order order = new Order { BasketProducts = baskItems, UserName = User.Identity.Name };
EFDbContext ent = new EFDbContext();
ent.Orders.Add(order);
ent.SaveChanges();
return RedirectToAction("Index", "Checkout", new { order = order });
}
而在结账指数方法应该只是把Order对象,并显示所有的产品在它
@model Domain.Elements.Order
//some code omitted
@foreach (var item in Model.BasketProducts)
{
<p>@item.Product.Name</p>
<p>@item.Quantity</p>
}
的问题是,在我的DB(以表)仅创建ID和用户名,所以我不能获取任何产品当前人订购。
我做了什么错误,或者我失去了一些东西使它工作?提前致谢。
编辑:这是我现在得到的错误。 未将对象引用设置为对象的实例。
什么是GetCurrentBasket(),它是如何填充的?您是否将您的表单从您的视图发布到您的CreateOrder()操作? –
哪里发生异常? – Zabavsky
GetCurrentBasket从当前会话中返回Basket对象。索引方法没有做任何特殊的处理:ActionResult Index(Order order){return View(order);} – asdewka