我正在挑戰自己製作一個小型網上商店,但在我的數據庫中存儲訂單時遇到問題。產品的商店清單數據庫
這是我的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