پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
۴. اسلایدر دوربین عکاسی
کد:
html
<div class="one-slider">
<h4>دوربین عکاسی</h4>
<div class="owl-carousel owl-theme ov1">
@foreach (var item in Model.PageImages.Where(p => p.ImageLocation == ImageLocation.G1).ToList())
{
<div class="item">
<figure>
<a href=""><img src="~/@item.Src" class="w-100" /></a>
</figure>
<h5>Adata d5-32G</h5>
<span>112.000 تومان</span>
</div>
}
</div>
</div>
توضیح:
اسلایدر محصولات دوربین عکاسی:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصاویری که محل قرارگیری آنها ImageLocation.G1 باشد.
حلقه @foreach: ایجاد اسلایدها به ازای هر تصویر فیلتر شده.
نمایش تصویر: استفاده از خاصیت Src برای نمایش تصویر.
نمایش نام و قیمت محصول: نمایش نمونهای از نام و قیمت محصول به صورت استاتیک.
۵. بنر تصویر تمام صفحه مرکزی
کد:
html
<div class="col-12">
<a href="#" class="adplacement-item mb-4">
<div class="adplacement-sponsored_box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.CenterFullScreen)?.FirstOrDefault()?.Src ?? ''">
</div>
</a>
</div>
توضیح:
نمایش تصویر در مکان CenterFullScreen:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصویری که محل قرارگیری آن ImageLocation.CenterFullScreen باشد.
اولین تصویر مناسب: استفاده از FirstOrDefault برای انتخاب اولین تصویر که معیار را برآورده میکند.
مسیر تصویر: استفاده از خاصیت Src برای نمایش تصویر.
۶. اسلایدر محصولات موبایل و تبلت
کد:
html
<div class="two-slider">
<h4>موبایل و تبلت</h4>
<div class="owl-carousel owl-theme ov2">
@foreach (var item in Model.PageImages.Where(p => p.ImageLocation == ImageLocation.G2).ToList())
{
<div class="item">
<figure>
<a href=""><img src="~/@item.Src" class="w-100" /></a>
</figure>
<h5>Adata d5-32G</h5>
<span>112.000 تومان</span>
</div>
}
</div>
</div>
توضیح:
اسلایدر محصولات موبایل و تبلت:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصاویری که محل قرارگیری آنها ImageLocation.G2 باشد.
حلقه @foreach: ایجاد اسلایدها به ازای هر تصویر فیلتر شده.
نمایش تصویر: استفاده از خاصیت Src برای نمایش تصویر.
نمایش نام و قیمت محصول: نمایش نمونهای از نام و قیمت محصول به صورت استاتیک.
نتیجهگیری
این کد ویو برای صفحه اصلی شامل نمایش اسلایدر اصلی، تصاویر تبلیغاتی و بنرها، و اسلایدرهای محصولات مختلف است. از کلاسهای Bootstrap و Owl Carousel برای استایلدهی و ایجاد کاروسلها استفاده میکند. دادهها از مدل ViewModel دریافت میشوند و به صورت داینامیک در صفحه نمایش داده میشوند.
Test_Store 14.zip
حجم:
56.5M
ادامه درس بخش صفحه اصلی پویا
که خودم اعتبار سنجی کردم بدونه کمک استاد که دیگران نگویند پروژه خطا میده
کوکی cookie
سلام! بیایید ابتدا توضیح دهیم که کوکی چیست و سپس نحوه استفاده از کوکیها در ASP.NET را بررسی کنیم.
کوکی چیست؟
کوکی یک فایل کوچک متنی است که توسط وبسایتها در مرورگر کاربر ذخیره میشود. این فایلها شامل اطلاعاتی مانند تنظیمات کاربر، وضعیت نشست (session)، و شناسههای کاربری هستند. کوکیها برای ذخیرهسازی اطلاعات کاربر بین درخواستهای مختلف به سرور استفاده میشوند.
نحوه استفاده از کوکیها در ASP.NET
۱. ایجاد و تنظیم کوکی
برای ایجاد و تنظیم یک کوکی در ASP.NET، میتوان از شیء HttpCookie استفاده کرد و سپس آن را به پاسخ HTTP اضافه کرد.
نمونه کد:
csharp
public ActionResult SetCookie()
{
HttpCookie cookie = new HttpCookie("UserPreferences");
cookie["Theme"] = "Dark";
cookie["Font"] = "Arial";
cookie.Expires = DateTime.Now.AddDays(7); // زمان انقضای کوکی (مثلاً ۷ روز)
Response.Cookies.Add(cookie);
return RedirectToAction("Index");
}
۲. خواندن کوکی
برای خواندن یک کوکی در ASP.NET، میتوان از شیء HttpRequest و مجموعه Request.Cookies استفاده کرد.
نمونه کد:
csharp
public ActionResult GetCookie()
{
HttpCookie cookie = Request.Cookies["UserPreferences"];
if (cookie != null)
{
string theme = cookie["Theme"];
string font = cookie["Font"];
ViewBag.Theme = theme;
ViewBag.Font = font;
}
return View();
}
۳. حذف کوکی
برای حذف یک کوکی، باید تاریخ انقضای کوکی را به گذشته تنظیم کنید. این کار باعث میشود که مرورگر کوکی را حذف کند.
نمونه کد:
csharp
public ActionResult RemoveCookie()
{
if (Request.Cookies["UserPreferences"] != null)
{
HttpCookie cookie = new HttpCookie("UserPreferences");
cookie.Expires = DateTime.Now.AddDays(-1); // تاریخ انقضا به گذشته تنظیم شده
Response.Cookies.Add(cookie);
}
return RedirectToAction("Index");
}
گزینههای کوکی (Cookie Options)
هنگام ایجاد یک کوکی، میتوان گزینههای مختلفی را تنظیم کرد مانند زمان انقضا، دامنه، مسیر، و امنیت.
نمونه کد با گزینههای کوکی:
csharp
public ActionResult SetCookieWithOptions()
{
HttpCookie cookie = new HttpCookie("UserPreferences")
{
["Theme"] = "Dark",
["Font"] = "Arial",
Expires = DateTime.Now.AddDays(7), // زمان انقضای کوکی (مثلاً ۷ روز)
Path = "/", // مسیر کوکی
Domain = "example.com", // دامنه کوکی
Secure = true, // فقط از طریق HTTPS
HttpOnly = true // فقط از طریق HTTP، دسترسی جاوااسکریپت محدود
};
Response.Cookies.Add(cookie);
return RedirectToAction("Index");
}
نتیجهگیری
با استفاده از این روشها، میتوانید کوکیها را در ASP.NET مدیریت کنید. کوکیها ابزاری قوی برای ذخیره اطلاعات کاربر در مرورگر هستند و میتوانند تجربه کاربری بهتری را فراهم کنند.
اگر به یک کوکی تاریخ انقضا ندهید، به طور پیشفرض به عنوان یک کوکی نشست (session cookie) در نظر گرفته میشود. این بدان معناست که کوکی تا زمانی که مرورگر باز باشد معتبر خواهد بود و هنگامی که مرورگر بسته شود، کوکی به طور خودکار حذف میشود.
نمونه کد:
csharp
public ActionResult SetCookieWithoutExpiration()
{
HttpCookie cookie = new HttpCookie("UserPreferences");
cookie["Theme"] = "Dark";
cookie["Font"] = "Arial";
// تاریخ انقضا تنظیم نمیشود، بنابراین به عنوان کوکی نشست در نظر گرفته میشود
Response.Cookies.Add(cookie);
return RedirectToAction("Index");
}
در این مثال، کوکیای که ایجاد شده است تا زمانی که مرورگر باز باشد معتبر خواهد بود و پس از بستن مرورگر، کوکی حذف میشود.
Test_Store 15.zip
حجم:
56.9M
افزودن به سبد خرید قسمت اول
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
این کد مربوط به سرویس سبد خرید (CartService) در یک فروشگاه اینترنتی است. سرویس سبد خرید شامل عملکردهایی برای اضافه کردن محصول به سبد خرید، حذف محصول از سبد خرید، دریافت سبد خرید کاربر، افزایش تعداد یک محصول در سبد خرید و کاهش تعداد یک محصول در سبد خرید میباشد. بیایید نگاهی دقیقتر به عملکردهای مختلف این سرویس بیندازیم:
تعریف Interface (رابط) ICartService
csharp
public interface ICartService
{
ResultDto AddToCart(long ProductId, Guid BrowserId);
ResultDto RemoveFromCart(long ProductId, Guid BrowserId);
ResultDto<CartDto> GetMyCart(Guid BrowserId);
ResultDto Add(long CartItemId);
ResultDto LowOff(long CartItemId);
}
کلاس CartService
سازنده و زمینههای کلاس
csharp
public class CartService : ICartService
{
private readonly IDataBaseContext _context;
public CartService(IDataBaseContext context)
{
_context = context;
}
IDataBaseContext
از پایگاه داده استفاده میکند و عملیاتهای دادهای را فراهم میکند.
سازنده کلاس، نمونهای از IDataBaseContext را دریافت کرده و آن را در متغیر _context ذخیره میکند.
افزودن محصول به سبد خرید
csharp
public ResultDto AddToCart(long ProductId, Guid BrowserId)
{
var cart = _context.Carts.Where(p => p.BrowserId == BrowserId && p.Finished == false).FirstOrDefault();
if (cart == null)
{
Cart newCart = new Cart()
{
Finished = false,
BrowserId = BrowserId,
};
_context.Carts.Add(newCart);
_context.SaveChanges();
cart = newCart;
}
var product = _context.Products.Find(ProductId);
var cartItem = _context.CartItems.Where(p => p.ProductId == ProductId && p.CartId == cart.Id).FirstOrDefault();
if (cartItem != null)
{
cartItem.Count++;
}
else
{
CartItem newCartItem = new CartItem()
{
Cart = cart,
Count = 1,
Price = product.Price,
Product = product,
};
_context.CartItems.Add(newCartItem);
_context.SaveChanges();
}
return new ResultDto()
{
IsSuccess = true,
Message = $"محصول {product.Name} با موفقیت به سبد خرید شما اضافه شد",
};
}
ابتدا بررسی میشود که آیا سبد خریدی برای کاربر موجود است یا نه. اگر سبد خریدی وجود ندارد، یک سبد خرید جدید ایجاد میشود.
سپس محصول مورد نظر در پایگاه داده جستجو میشود.
اگر محصولی با شناسه مورد نظر در سبد خرید وجود داشته باشد، تعداد آن افزایش مییابد. در غیر این صورت، محصول جدیدی به سبد خرید اضافه میشود.
افزایش تعداد یک محصول در سبد خرید
csharp
public ResultDto Add(long CartItemId)
{
var cartItem = _context.CartItems.Find(CartItemId);
cartItem.Count++;
_context.SaveChanges();
return new ResultDto()
{
IsSuccess = true,
};
}
محصول مورد نظر در سبد خرید بر اساس CartItemId جستجو میشود و تعداد آن افزایش مییابد.
کاهش تعداد یک محصول در سبد خرید
csharp
public ResultDto LowOff(long CartItemId)
{
var cartItem = _context.CartItems.Find(CartItemId);
if (cartItem.Count <= 1)
{
return new ResultDto()
{
IsSuccess = false,
};
}
cartItem.Count--;
_context.SaveChanges();
return new ResultDto()
{
IsSuccess = true,
};
}
محصول مورد نظر در سبد خرید بر اساس CartItemId جستجو میشود و تعداد آن کاهش مییابد. اگر تعداد محصول کمتر یا برابر با ۱ باشد، عملیات کاهش ناموفق خواهد بود.
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
دریافت سبد خرید کاربر
csharp
public ResultDto<CartDto> GetMyCart(Guid BrowserId)
{
var cart = _context.Carts
.Include(p => p.CartItems)
.ThenInclude(p => p.Product)
.ThenInclude(p => p.ProductImages)
.Where(p => p.BrowserId == BrowserId && p.Finished == false)
.OrderByDescending(p => p.Id)
.FirstOrDefault();
return new ResultDto<CartDto>()
{
Data = new CartDto()
{
CartItems = cart.CartItems.Select(p => new CartItemDto
{
Count = p.Count,
Price = p.Price,
Product = p.Product.Name,
Id = p.Id,
Images = p.Product?.ProductImages?.FirstOrDefault()?.Src ?? "",
}).ToList(),
},
IsSuccess = true,
};
}
سبد خرید کاربر بر اساس BrowserId جستجو میشود و لیستی از محصولات موجود در سبد خرید همراه با اطلاعات آنها برگردانده میشود.
حذف محصول از سبد خرید
csharp
public ResultDto RemoveFromCart(long ProductId, Guid BrowserId)
{
var cartitem = _context.CartItems.Where(p => p.Cart.BrowserId == BrowserId).FirstOrDefault();
if (cartitem != null)
{
cartitem.IsRemoved = true;
cartitem.RemoveTime = DateTime.Now;
_context.SaveChanges();
return new ResultDto
{
IsSuccess = true,
Message = "محصول از سبد خرید شما حذف شد"
};
}
else
{
return new ResultDto
{
IsSuccess = false,
Message = "محصول یافت نشد"
};
}
}
محصول مورد نظر بر اساس ProductId و BrowserId جستجو میشود و سپس از سبد خرید حذف میشود.
کلاسهای DTO
CartDto و CartItemDto
این کلاسها برای انتقال دادههای سبد خرید و آیتمهای سبد خرید استفاده میشوند.
csharp
public class CartDto
{
public List<CartItemDto> CartItems { get; set; }
}
public class CartItemDto
{
public long Id { get; set; }
public string Product { get; set; }
public string Images { get; set; }
public int Count { get; set; }
public int Price { get; set; }
}
CartDto
شامل لیستی از CartItemDto است که اطلاعات مربوط به محصولات موجود در سبد خرید را نگهداری میکند.
نتیجهگیری
این کد شامل عملیاتی برای مدیریت سبد خرید در یک فروشگاه اینترنتی است. هر عملیاتی مانند افزودن محصول به سبد خرید، حذف محصول، افزایش و کاهش تعداد محصول و دریافت سبد خرید کاربر به طور کامل پیادهسازی شده است.
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
بیایید کد را تحلیل کنیم و توضیحات هر بخش را مرور کنیم. این کد در namespace Test_Store.Domain.Entities.Carts قرار دارد و شامل دو کلاس Cart و CartItem است که سبد خرید و آیتمهای سبد خرید را در یک فروشگاه اینترنتی مدیریت میکنند.
کلاس Cart
این کلاس نمایانگر یک سبد خرید است.
csharp
public class Cart : BaseEntity
{
public virtual User User { get; set; }
public long? UserId { get; set; }
public Guid BrowserId { get; set; }
public bool Finished { get; set; }
public ICollection<CartItem> CartItems { get; set; }
}
User (کاربر):
این ویژگی به کاربر مرتبط با سبد خرید اشاره دارد. این رابطه به صورت مجازی (virtual) تعریف شده است، که به Entity Framework اجازه میدهد تا رابطه را به صورت lazy load مدیریت کند.
UserId:
شناسه کاربر مرتبط با سبد خرید. این مقدار میتواند null باشد، به این معنا که ممکن است سبد خرید بدون کاربر (مثلاً برای مهمانها) ایجاد شود.
BrowserId (شناسه مرورگر):
یک GUID که به مرورگر کاربر اختصاص داده شده است. این ویژگی میتواند برای پیگیری سبد خرید کاربر حتی بدون ورود به سیستم استفاده شود.
Finished (پایان یافته):
یک مقدار بولی که نشان میدهد آیا سبد خرید کامل شده است (مثلاً خرید انجام شده است) یا خیر.
CartItems (آیتمهای سبد خرید):
یک مجموعه از آیتمهای سبد خرید که در این سبد خرید وجود دارند. این رابطه به صورت یک به چند تعریف شده است، یعنی یک سبد خرید میتواند چندین آیتم سبد خرید داشته باشد.
کلاس CartItem
این کلاس نمایانگر یک آیتم در سبد خرید است.
csharp
public class CartItem : BaseEntity
{
public virtual Product Product { get; set; }
public long ProductId { get; set; }
public int Count { get; set; }
public int Price { get; set; }
public virtual Cart Cart { get; set; }
public long CartId { get; set; }
}
Product (محصول):
این ویژگی به محصول مرتبط با آیتم سبد خرید اشاره دارد. این رابطه نیز به صورت مجازی (virtual) تعریف شده است تا Entity Framework بتواند به صورت lazy load این رابطه را مدیریت کند.
ProductId:
شناسه محصول مرتبط با آیتم سبد خرید.
Count (تعداد):
تعداد محصول در این آیتم سبد خرید. این مقدار نشان میدهد که چند واحد از محصول در سبد خرید قرار دارد.
Price (قیمت):
قیمت محصول در زمان اضافه شدن به سبد خرید.
Cart (سبد خرید):
این ویژگی به سبد خرید مرتبط با این آیتم اشاره دارد. این رابطه به صورت مجازی (virtual) تعریف شده است.
CartId:
شناسه سبد خرید مرتبط با این آیتم.
نتیجهگیری
این کلاسها به همراه ویژگیهایشان، ساختار دادهای سبد خرید و آیتمهای مرتبط با آن را در یک فروشگاه اینترنتی تعریف میکنند. با استفاده از این کلاسها میتوان سبد خرید کاربران را مدیریت کرد، آیتمها را به سبد خرید اضافه کرد، تعداد آیتمها را تغییر داد و سبد خرید را نهایی کرد.
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
این کد مربوط به یک کلاس به نام CookiesManeger است که در namespace EndPoint.Site.Utilities قرار دارد. این کلاس شامل متدهایی برای مدیریت کوکیها در ASP.NET Core است. بیایید هر متد را به صورت جداگانه توضیح دهیم.
کلاس CookiesManeger
متد Add
این متد برای افزودن یک کوکی جدید به پاسخ HTTP استفاده میشود.
csharp
public void Add(HttpContext context, string token, string value)
{
context.Response.Cookies.Append(token, value, getCookieOptions(context));
}
پارامترها:
HttpContext context:
زمینه درخواست HTTP.
string token: نام کوکی.
string value: مقدار کوکی.
عملکرد:
کوکیای با نام token و مقدار value به پاسخ HTTP اضافه میکند. تنظیمات کوکی از متد getCookieOptions گرفته میشود.
متد Contains
این متد بررسی میکند که آیا کوکی با نام مشخصی در درخواست HTTP وجود دارد یا خیر.
csharp
public bool Contains(HttpContext context, string token)
{
return context.Request.Cookies.ContainsKey(token);
}
پارامترها:
HttpContext context:
زمینه درخواست HTTP.
string token: نام کوکی.
عملکرد:
بررسی میکند که آیا کوکی با نام token در درخواست HTTP وجود دارد یا خیر و نتیجه را به صورت بولی برمیگرداند.
متد GetValue
این متد مقدار کوکی با نام مشخص را از درخواست HTTP برمیگرداند.
csharp
public string GetValue(HttpContext context, string token)
{
string cookieValue;
if (!context.Request.Cookies.TryGetValue(token, out cookieValue))
{
return null;
}
return cookieValue;
}
پارامترها:
HttpContext context: زمینه درخواست HTTP.
string token: نام کوکی.
عملکرد:
تلاش میکند مقدار کوکی با نام token را از درخواست HTTP دریافت کند. اگر کوکی موجود باشد، مقدار آن را برمیگرداند؛ در غیر این صورت، null برمیگرداند.
متد Remove
این متد کوکی با نام مشخص را از درخواست HTTP حذف میکند.
csharp
public void Remove(HttpContext context, string token)
{
if (context.Request.Cookies.ContainsKey(token))
{
context.Response.Cookies.Delete(token);
}
}
پارامترها:
HttpContext context:
زمینه درخواست HTTP.
string token: نام کوکی.
عملکرد:
بررسی میکند که آیا کوکی با نام token در درخواست HTTP وجود دارد یا خیر. اگر کوکی موجود باشد، آن را حذف میکند.
متد GetBrowserId
این متد شناسه مرورگر (BrowserId) را دریافت میکند. اگر شناسه مرورگر وجود نداشته باشد، یک شناسه جدید ایجاد کرده و آن را به کوکی اضافه میکند.
csharp
public Guid GetBrowserId(HttpContext context)
{
string browserId = GetValue(context, "BowserId");
if (browserId == null)
{
string value = Guid.NewGuid().ToString();
Add(context, "BowserId", value);
browserId = value;
}
Guid guidBowser;
Guid.TryParse(browserId, out guidBowser);
return guidBowser;
}
پارامترها:
HttpContext context:
زمینه درخواست HTTP.
عملکرد:
تلاش میکند مقدار کوکی BowserId را دریافت کند. اگر کوکی موجود نباشد، یک شناسه جدید ایجاد کرده و آن را به کوکی اضافه میکند. سپس شناسه مرورگر را به صورت Guid برمیگرداند.
متد getCookieOptions
این متد تنظیمات کوکی را برای افزودن به پاسخ HTTP ایجاد میکند.
csharp
private CookieOptions getCookieOptions(HttpContext context)
{
return new CookieOptions
{
HttpOnly = true,
Path = context.Request.PathBase.HasValue ? context.Request.PathBase.ToString() : "/",
Secure = context.Request.IsHttps,
Expires = DateTime.Now.AddDays(100),
};
}
پارامترها:
HttpContext context:
زمینه درخواست HTTP.
عملکرد:
یک شیء CookieOptions جدید ایجاد میکند با تنظیمات زیر:
HttpOnly:
فقط از طریق HTTP قابل دسترسی باشد، نه از طریق جاوااسکریپت.
Path: مسیر کوکی.
Secure:
کوکی فقط در درخواستهای HTTPS ارسال شود.
Expires:
تاریخ انقضای کوکی (100 روز از تاریخ فعلی).
نتیجهگیری
این کلاس ابزاری را فراهم میکند برای مدیریت کوکیها در ASP.NET Core، از جمله افزودن، حذف، بررسی وجود، و دریافت مقدار کوکیها. این ابزار به شما امکان میدهد که به راحتی کوکیها را در برنامه وب خود مدیریت کنید.
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
بیایید این کد را تحلیل کنیم و توضیحات مربوط به هر بخش از کنترلر CartController را مرور کنیم. این کنترلر به عنوان یک رابط برای مدیریت سبد خرید در برنامه ASP.NET Core عمل میکند و شامل عملیاتی مانند افزودن محصول به سبد خرید، حذف محصول، افزایش و کاهش تعداد محصول و مشاهده سبد خرید کاربر است.
فضای نامها و وابستگیها
csharp
using EndPoint.Site.Utilities;
using Microsoft.AspNetCore.Mvc;
using Test_Store.Application.Services.Carts;
EndPoint.Site.Utilities:
برای استفاده از کلاس CookiesManeger.
Microsoft.AspNetCore.Mvc:
برای استفاده از کنترلرها و متدهای مربوط به MVC.
Test_Store.Application.Services.Carts:
برای استفاده از سرویسهای مربوط به سبد خرید.
تعریف کلاس CartController
csharp
namespace EndPoint.Site.Controllers
{
public class CartController : Controller
{
private readonly ICartService _cartService;
private readonly CookiesManeger cookiesManeger;
public CartController(ICartService cartService)
{
_cartService = cartService;
cookiesManeger = new CookiesManeger();
}
متغیرهای خصوصی:
_cartService:
یک سرویس برای مدیریت عملیاتهای سبد خرید.
cookiesManeger:
یک شیء از کلاس CookiesManeger برای مدیریت کوکیها.
سازنده:
سازنده کلاس، ICartService را به عنوان وابستگی دریافت کرده و آن را به _cartService اختصاص میدهد. همچنین یک نمونه از CookiesManeger ایجاد میکند.
متد Index
csharp
public IActionResult Index()
{
var resultGetLst = _cartService.GetMyCart(cookiesManeger.GetBrowserId(HttpContext));
return View(resultGetLst.Data);
}
عملکرد:
شناسه مرورگر (BrowserId) کاربر را از کوکیها دریافت میکند.
با استفاده از سرویس _cartService، سبد خرید کاربر را دریافت میکند.
دادههای سبد خرید را به ویو ارسال میکند.
متد AddToCart
csharp
public IActionResult AddToCart(long ProductId)
{
var resultAdd = _cartService.AddToCart(ProductId, cookiesManeger.GetBrowserId(HttpContext));
return RedirectToAction("Index");
}
عملکرد:
شناسه مرورگر (BrowserId) کاربر را از کوکیها دریافت میکند.
محصول مورد نظر را به سبد خرید کاربر اضافه میکند.
کاربر را به صفحه Index ریدایرکت میکند.
متد Add
csharp
public IActionResult Add(long CartItemId)
{
_cartService.Add(CartItemId);
return RedirectToAction("Index");
}
عملکرد:
تعداد آیتم مشخص در سبد خرید را افزایش میدهد.
کاربر را به صفحه Index ریدایرکت میکند.
متد LowOff
csharp
public IActionResult LowOff(long CartItemId)
{
_cartService.LowOff(CartItemId);
return RedirectToAction("Index");
}
عملکرد:
تعداد آیتم مشخص در سبد خرید را کاهش میدهد.
کاربر را به صفحه Index ریدایرکت میکند.
متد Remove
csharp
public IActionResult Remove(long ProductId)
{
_cartService.RemoveFromCart(ProductId, cookiesManeger.GetBrowserId(HttpContext));
return RedirectToAction("Index");
}
عملکرد:
شناسه مرورگر (BrowserId) کاربر را از کوکیها دریافت میکند.
محصول مشخص را از سبد خرید کاربر حذف میکند.
کاربر را به صفحه Index ریدایرکت میکند.
نتیجهگیری
این کنترلر به عنوان واسطی برای مدیریت عملیاتهای مختلف مرتبط با سبد خرید در برنامه ASP.NET Core عمل میکند. از سرویسهای سبد خرید (ICartService) و مدیریت کوکیها (CookiesManeger) برای انجام عملیاتها و پیگیری سبد خرید کاربر استفاده میکند.
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
بیایید کد مربوط به نمایش سبد خرید در ویو را بررسی و توضیح دهیم. این کد یک ویو Razor است که از مدل CartDto برای نمایش سبد خرید کاربر استفاده میکند.
تعریف مدل و تنظیمات
csharp
@using Test_Store.Application.Services.Carts;
@model CartDto
@{
ViewData["Title"] = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
int sumTota = 0;
}
@using Test_Store.Application.Services.Carts:
استفاده از فضای نام برای دسترسی به مدلها و سرویسهای مربوط به سبد خرید.
@model CartDto:
تعریف مدل ویو که از نوع CartDto است.
ViewData["Title"]:
تنظیم عنوان صفحه.
Layout:
تعیین لایوت (چیدمان) صفحه.
int sumTota:
تعریف یک متغیر محلی برای مجموع کل قیمتها.
نمایش سبد خرید
html
<section class="cart-home">
<div class="post-item-cart d-block order-2">
<div class="content-page">
<div class="cart-form">
<form action="#" class="c-form">
<table class="table-cart cart table table-borderless">
<thead>
<tr>
<th scope="col" class="product-cart-name">نام محصول</th>
<th scope="col" class="product-cart-quantity">تعداد مورد نیاز</th>
<th scope="col" class="product-cart-price">قیمت</th>
<th scope="col" class="product-cart-Total">مجموع</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.CartItems)
{
<tr>
<th scope="row" class="product-cart-name">
<div class="product-thumbnail-img">
<a href="#">
<img src="~/@item.Images">
</a>
<div class="product-remove">
<a href="~/cart/remove?ProductId=@item.Id" class="remove">
<i class="mdi mdi-close"></i>
</a>
</div>
</div>
<div class="product-title">
<a href="#">
@item.Product
</a>
</div>
</th>
<td class="product-cart-quantity">
<div class="required-number before">
<div class="quantity">
<input type="number" min="1" max="100" step="1" value="@item.Count" id="count-@item.Id">
<div class="quantity-nav">
<div class="quantity-button quantity-up" onclick="AddCount('@item.Id')">+</div>
<div class="quantity-button quantity-down" onclick="lowCount('@item.Id')">-</div>
</div>
</div>
</div>
</td>
<td class="product-cart-price">
<span class="amount">
@item.Price.ToString("n0")
<span>تومان</span>
</span>
</td>
<td class="product-cart-Total">
<span class="amount">
@{