Shopping Cart with Ajax Updates

Lượt xem: 20107

Chúng tôi sẽ cho phép người dùng đặt album trong giỏ hàng của họ mà không cần đăng ký, nhưng họ sẽ cần phải đăng ký làm khách để hoàn tất thanh toán. Quá trình mua sắm và thanh toán sẽ được tách thành hai bộ điều khiển: một điều khiển Giỏ hàng mà cho phép nặc danh thêm các mục vào một giỏ hàng, và một điều khiển Checkout đó xử lý các quy trình kiểm tra. Chúng tôi sẽ bắt đầu với các giỏ hàng mua sắm trong phần này, sau đó xây dựng các quy trình Checkout ở phần sau.

Adding the Cart, Order, and OrderDetail model classes

(Thêm lớp (classes) model  giỏ hàng (Cart), Đặt hàng(Order), và Đặt hàng chi tiết (OrderDetail))

Giỏ hàng Thanh toán và mua sắm của chúng tôi sẽ làm cho quá trình sử dụng của một số lớp  mới. Kích chuột phải vào thư mục Models và thêm một lớp Cart (Cart.cs) với mã sau đây.

namespace MvcMusicStore.ViewModels
{
    public class ShoppingCartRemoveViewModel
    {
        public string Message { get; set; }
        public decimal CartTotal { get; set; }
        public int CartCount { get; set; }
        public int ItemCount { get; set; }
        public int DeleteId { get; set; }
    }
}

Lớp này là khá tương tự với những lớp khác,  với ngoại lệ của [Key] thuộc tính cho recordID. Giỏ hàng có một định danh chuỗi tên là CartID để cho phép mua sắm vô danh, nhưng bảng bao gồm một khóa chính là recordID. Theo quy ước, Entity Framework Code-First hy vọng rằng các khóa chính cho một bảng tên là Giỏ hàng hoặc sẽ CartId hoặc ID, nhưng chúng ta có thể dễ dàng ghi đè lên rằng qua các chú thích hoặc mã nếu chúng ta muốn. Đây là một ví dụ về cách chúng ta có thể sử dụng quy ước đơn giản trong Entity Framework.

Tiếp theo thêm class Order (Order.cs) như code dưới:

using System.Collections.Generic;
 
namespace MvcMusicStore.Models
{
    public partial class Order
    {
        public int    OrderId    { get; set; }
        public string Username   { get; set; }
        public string FirstName  { get; set; }
        public string LastName   { get; set; }
        public string Address    { get; set; }
        public string City       { get; set; }
        public string State      { get; set; }
        public string PostalCode { get; set; }
        public string Country    { get; set; }
        public string Phone      { get; set; }
        public string Email      { get; set; }
        public decimal Total     { get; set; }
        public System.DateTime OrderDate      { get; set; }
        public List OrderDetails { get; set; }
    }
}

Lớp này theo dõi tổng hợp và cung cấp thông tin cho một đơn đặt hàng.

Thêm lớp (class) OrderDetail.cs như code sau:

 

namespace MvcMusicStore.Models
{
    public class OrderDetail
    {
        public int OrderDetailId { get; set; }
        public int OrderId { get; set; }
        public int AlbumId { get; set; }
        public int Quantity { get; set; }
        public decimal UnitPrice { get; set; }
        public virtual Album Album { get; set; }
        public virtual Order Order { get; set; }
    }
}