-->

[Lập trình Web] THIẾT KẾ GIỎ HÀNG TRONG ASP.NET 4.0

Giống như khi vào siêu thị, các website bán hàng cũng có giỏ hàng là nơi chứa những mặt hàng mà người dùng dự định sẽ đặt hàng. Khi lựa chọn hàng hóa vào trong giỏ, người dùng vẫn có thể loại bỏ những mặt hàng của mình ra khỏi giỏ hàng.  Lúc xác thực những mặt hàng cần mua thì số lượng mặt hàng. Sau đây tôi xin giới thiệu cách tạo ra một giỏ hàng đơn giản theo Murach’s Asp.net 4.0.

Trong cơ sở dữ liệu có bảng Product(ProductId,Name, ShortDiscription, LongDiscription,  ImageFile…) đã có dữ liệu, trong đó: ProductId là mã sản phẩm , Name: tên sản phẩm, ShortDiscription là mô tả ngắn gọn về sản phẩm, LongDiscription là mô tả đầy đủ về sản phẩm, ImageFile là đường dẫn trỏ đến hình ảnh sản phẩm.
Cấu trúc của giỏ hàng được thiết kế sao cho từ trang Order, khi chọn mặt hàng trong DropDownList : ddlProduct và số lượng được nhập vào ô textbox txtQuatity và nhấn submit thì sẽ chuyển đến trang Cart và hiển thị giỏ hàng ở đây.
Đặt hàng
Giao diện chọn mặt hàng cho giỏ hàng
Sau khi nhấn vào Add to Cart hoặc Go to Cart thì sẽ chuyển đến giỏ hàng :
Giỏ hàng
Giỏ hàng
Như vậy cần phải thiết kế các lớp sau:
Các lớp trong giỏ hàng
Nội dung của lớp Product như sau:

public class Product
{
   /// <summary>
   /// Mã sản phẩm
   /// </summary>
    private string productid;
   
    public string ProductID { get { return productid; } set { value= productid; } }
    /// <summary>
    /// Tên sản phẩm
    /// </summary>
    private string name;
    public string Name { get { return name; } set { name = value; ; } }
    /// <summary>
    /// Mô tả ngắn gọn
    /// </summary>
    string sd;
    public string ShortDescription { get { return sd; } set { sd = value; } }
    /// <summary>
    /// Mô tả đầy đủ
    /// </summary>
    string ld;
    public string LongDescription { get { return ld; } set { ld = value ; } }
    /// <summary>
    /// Đơn giá
    /// </summary>
    decimal up;
    public decimal UnitPrice { get { return up; } set { up = value ;} }
    /// <summary>
    /// Hình ảnh của sản phẩm
    /// </summary>
    string imf;
    public string ImageFile { get { return imf; } set { imf = value; } }
}


Nội dung của lớp CartItem như sau:
public class CartItem
{
    public CartItem() {}
    /// <summary>
    /// Khởi dựng có tham số
    /// </summary>
    /// <param name="product">Sản phẩm</param>
    /// <param name="quantity">Số lượng</param>
    public CartItem(Product product, int quantity)
    {
        this.Product = product;
        this.Quantity = quantity;
    }

    public Product Product { get; set; }
    public int Quantity { get; set; }
    /// <summary>
    /// Phương thức thêm số lượng
    /// </summary>
    /// <param name="quantity">Số lượng thêm vào</param>
    public void AddQuantity(int quantity)
    {
        this.Quantity += quantity;
    }

    public string Display()
    {
        string displayString =
            Product.Name + " (" + Quantity.ToString()
            + " at " + Product.UnitPrice.ToString("c") + " each)";

        return displayString;
    }
   
}


Nội dung của lớp CartItemList như sau:
using System;
using System.Collections.Generic;
using System.Web;

public class CartItemList
{
    /// <summary>
    /// Danh mục sản phẩm
    /// </summary>
    private List<CartItem> cartItems;
    public CartItemList()
    {
        cartItems = new List<CartItem>();
    }
    /// <summary>
    /// Số lượng mặt hàng
    /// </summary>
    public int Count {
        get { return cartItems.Count; }
    }
    /// <summary>
    /// Khai báo kiểu mảng
    /// </summary>
    /// <param name="index">chỉ số mảng</param>
    /// <returns>phần tử có vị trí index</returns>
    public CartItem this[int index]
    {
        get { return cartItems[index]; }
        set { cartItems[index] = value; }
    }
    /// <summary>
    /// Lấy sản phẩm từ danh mục sản phẩm
    /// </summary>
    /// <param name="id">Sản phẩm cần lấy</param>
    /// <returns>Trả lại sản phẩm có chỉ số là id</returns>
    public CartItem this[string id]
    {
        get {
            foreach (CartItem c in cartItems)
                if (c.Product.ProductID == id) return c;
            return null;
        }
    }

    public static CartItemList GetCart()
    {
        CartItemList cart = (CartItemList) HttpContext.Current.Session["Cart"];
        if (cart == null)
            HttpContext.Current.Session["Cart"] = new CartItemList();
        return (CartItemList) HttpContext.Current.Session["Cart"];
    }

    public void AddItem(Product product, int quantity)
    {
        CartItem c = new CartItem(product, quantity);
        cartItems.Add(c);
    }

    public void RemoveAt(int index)
    {
        cartItems.RemoveAt(index);
    }

    public void Clear()
    {
        cartItems.Clear();
    }
}

Theo: Murach ASP.NET 4 Web Programming With Csharp 2010
Chúc các bạn thành công./.
Còn tiếp.


No comments :