ASP.NET Core’da Ürün Sepete Ekleme
ASP.NET Core, web uygulamaları oluşturmak için kullanılan bir açık kaynaklı çerçevedir. ASP.NET Core ile e-ticaret uygulamaları geliştirmek oldukça kolaydır. Bu makalede, ASP.NET Core’da ürün sepete ekleme işleminin nasıl yapılacağını adım adım anlatacağız.
1. Adım: Proje Oluşturma
İlk olarak, Visual Studio’da yeni bir ASP.NET Core projesi oluşturun. Proje türü olarak “Web Uygulaması”nı seçin.
2. Adım: Veritabanı Oluşturma
Ürünleri ve sepet öğelerini saklamak için bir veritabanı oluşturmamız gerekiyor. Bu örnekte, Entity Framework Core kullanarak bir SQLite veritabanı oluşturacağız.
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
Ardından, aşağıdaki komutları çalıştırarak veritabanını oluşturabilirsiniz:
dotnet ef migrations add InitialCreate
dotnet ef database update
3. Adım: Modeller Oluşturma
Ürünleri ve sepet öğelerini temsil eden modeller oluşturalım.
“`
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class CartItem
{
public int Id { get; set; }
public int ProductId { get; set; }
public int Quantity { get; set; }
}
“`
4. Adım: Bağlam Oluşturma
Veritabanına erişmek için bir bağlam sınıfı oluşturalım.
“`
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions
: base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<CartItem> CartItems { get; set; }
}
“`
5. Adım: Ürünleri Veritabanına Ekleme
Örnek olarak birkaç ürünü veritabanına ekleyelim.
“`
using (var db = new AppDbContext())
{
db.Products.AddRange(new[]
{
new Product { Name = “Elma”, Price = 10 },
new Product { Name = “Armut”, Price = 15 },
new Product { Name = “Muz”, Price = 20 }
});
db.SaveChanges();
}
“`
6. Adım: Ürünleri Listeleme
Ürünleri listelemek için bir kontrolcü oluşturalım.
“`
public class ProductsController : Controller
{
private readonly AppDbContext _db;
public ProductsController(AppDbContext db)
{
_db = db;
}
public IActionResult Index()
{
var products = _db.Products.ToList();
return View(products);
}
}
“`
Ardından, ürünlerin listelendiği bir görünüm oluşturalım.
“`
@model IEnumerable
Ürünler
-
@foreach (var product in Model)
- @product.Name – @product.Price TL
{
}
“`
7. Adım: Sepete Ekleme İşlemi
Ürünleri sepete eklemek için bir kontrolcü oluşturalım.
“`
public class CartController : Controller
{
private readonly AppDbContext _db;
public CartController(AppDbContext db)
{
_db = db;
}
public IActionResult AddToCart(int productId)
{
var product = _db.Products.Find(productId);
var cartItem = _db.CartItems.FirstOrDefault(ci => ci.ProductId == productId);
if (cartItem == null)
{
cartItem = new CartItem
{
ProductId = productId,
Quantity = 1
};
_db.CartItems.Add(cartItem);
}
else
{
cartItem.Quantity++;
}
_db.SaveChanges();
return RedirectToAction("Index", "Products");
}
}
“`
8. Adım: Sepeti Listeleme
Sepeti listelemek için bir kontrolcü oluşturalım.
“`
public class CartController : Controller
{
private readonly AppDbContext _db;
public CartController(AppDbContext db)
{
_db = db;
}
public IActionResult Index()
{
var cartItems = _db.CartItems.Include(ci => ci.Product).ToList();
return View(cartItems);
}
}
“`
Ardından, sepetin listelendiği bir görünüm oluşturalım.
“`
@model IEnumerable
Sepet
-
@foreach (var cartItem in Model)
- @cartItem.Product.Name – @cartItem.Quantity x @cartItem.Product.Price TL
{
}
“`
9. Adım: Sepetten Ürün Silme
Sepetten ürün silmek için bir kontrolcü oluşturalım.
“`
public class CartController : Controller
{
private readonly AppDbContext _db;
public CartController(AppDbContext db)
{
_db = db;
}
public IActionResult RemoveFromCart(int cartItemId)
{
var cartItem = _db.CartItems.Find(cartItemId);
_db.CartItems.Remove(cartItem);
_db.SaveChanges();
return RedirectToAction("Index");
}
}
“`
10. Adım: Sipariş Oluşturma
Sipariş oluşturmak için bir kontrolcü oluşturalım.
“`
public class OrdersController : Controller
{
private readonly AppDbContext _db;
public OrdersController(AppDbContext db)
{
_db = db;
}
public IActionResult Create()
{
var order = new Order();
return View(order);
}
[HttpPost]
public IActionResult Create(Order order)
{
if (ModelState.IsValid)
{
_db.Orders.Add(order);
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(order);
}
}
“`
Ardından, siparişin oluşturulduğu bir görünüm oluşturalım.
“`
@model Order
Sipariş Oluşturma
“`
Faydalı Siteler
- ASP.NET Core Resmi Dokümantasyonu
- Entity Framework Core Resmi Dokümantasyonu
- ASP.NET Core E-ticaret Örneği