我是一名大學生,仍在學習。這是我的項目; 當用戶登錄時,他們可以將產品添加到購物籃。然後他們繼續到他們輸入地址和卡信息的地址/付款。我需要做的是一個「查看訂單」,用戶可以查看以前的訂單,這樣做的最佳方式是什麼?不要求所有的方式,只是你認爲最有效的顯示這些信息。 查看訂單需要顯示訂單詳細信息,地址,名稱等,並在訂單下面顯示產品。 請查看我的課程以獲取更多信息;顯示想要的數據的最佳方式
訂單
public partial class Order
{
[ScaffoldColumn(false)]
public int OrderId { get; set; }
[ScaffoldColumn(false)]
public System.DateTime OrderDate { get; set; }
[ScaffoldColumn(false)]
[Remote("CheckUserName", "Account")]
public string Username { get; set; }
[Required]
[StringLength(16, ErrorMessage = "Your name is too long")]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Your last name is required.")]
[StringLength(16, ErrorMessage = "Last name is too long.")]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Required(ErrorMessage = "Address is required.")]
public string Address { get; set; }
[Required(ErrorMessage = "City is required.")]
public string City { get; set; }
[Required(ErrorMessage = "Postcode is required.")]
[Display(Name = "Post Code")]
public string PostalCode { get; set; }
[Required(ErrorMessage = "Country is required.")]
public string Country { get; set; }
[Required(ErrorMessage = "Phone number is required.")]
public string Phone { get; set; }
[RegularExpression(@"[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}", ErrorMessage = "Email doesn't look like a valid email address.")]
public string Email { get; set; }
[System.ComponentModel.DataAnnotations.Compare("Email")]
[Display(Name = "Confirm your email address")]
public string EmailConfirm { get; set; }
[ScaffoldColumn(false)]
public string PaymentTransactionId { get; set; }
[ScaffoldColumn(false)]
public bool HasBeenShipped { get; set; }
[ScaffoldColumn(false)]
[ReadOnly(true)]
public decimal Total { get; set; }
public CardDetails cardDetails { get; set; }
//public List<CardDetails> cardDetails { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
的OrderDetail類
public class OrderDetail
{
public int OrderDetailId { get; set; }
public int OrderId { get; set; }
public int ProductId { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public virtual Product Product { get; set; }
public virtual Order Order { get; set; }
}
產品類別
public class Product
{
[Key]
public virtual int ProductId { get; set; }
public virtual int CategoryId { get; set; }
public virtual string Title { get; set; }
public virtual string Description { get; set; }
public virtual string Colour { get; set; }
public virtual string ProductImg { get; set; }
public virtual decimal Price { get; set; }
public virtual int Quantity { get; set; }
public Category Category { get; set; }
}
UPDATE ** 控制器;
public ActionResult Index()
{
var viewModel = (from o in new TshirtStoreDB().Orders
select new OrderArchiveViewModel
{
Address = o.Address,
City = o.City,
OrderDate = o.OrderDate,
PostalCode = o.PostalCode,
Details = (from d in o.OrderDetails
select new OrderDetailArchive
{
Description = d.Product.Description,
Quantity = d.Quantity,
Title = d.Product.Title,
UnitPrice = d.UnitPrice
}).ToList()
}).ToList() ;
return View(viewModel);
}
ERROR FIXED
public class TshirtStoreDB : DbContext
{
public TshirtStoreDB() : base("name=TshirtStoreDB")
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Cart> Carts { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
}
我查看;
@model T_shirt_Company_v3.ViewModels.OrderArchiveViewModel
<table>
<tbody>
@foreach (var m in Model)
{
<tr>
<td>@m.OrderDate</td>
<td>@m.Address</td>
<td>@m.City</td>
<td>@m.PostalCode</td>
<td><button class="btnDetails">Details</button></td>
</tr>
foreach (var d in m.Details)
{
<tr style="display: none;">
<td>
<table>
<tbody>
<tr>
<td>@d.Title</td>
<td>@d.Description</td>
<td>@d.Quantity</td>
<td>@d.UnitPrice</td>
</tr>
</tbody>
</table>
</td>
</tr>
}
}
<tbody>
</table>
錯誤:
T_shirt_Company_v3.Models.OrderArchiveViewModel: : EntityType 'OrderArchiveViewModel' has no key defined. Define the key for this EntityType.
T_shirt_Company_v3.Models.OrderDetailArchive: : EntityType 'OrderDetailArchive' has no key defined. Define the key for this EntityType.
OrderArchiveViewModels: EntityType: EntitySet 'OrderArchiveViewModels' is based on type 'OrderArchiveViewModel' that has no keys defined.
OrderDetailArchives: EntityType: EntitySet 'OrderDetailArchives' is based on type 'OrderDetailArchive' that has no keys defined.
你問如何去了解數據持久化到數據庫,以及如何從數據庫中檢索過去的訂單?你是否使用實體框架代碼?它看起來像你是每個數據註釋,但更多的信息將不勝感激。 – GibralterTop