کتابخانه LazZiya.TagHelpers یک مجموعه از TagHelpers مفید برای هر پروژه ASP.NET Core است. این کتابخانه شامل TagHelpers مختلفی برای کنترلهای صفحهنمایش، تنظیمات محلی، و اضافه کردن کنترلهای متنوع مانند Paging، Select-Enum، و Language Navigation است.
برخی از TagHelpers مهم:
Paging TagHelper:
برای ایجاد کنترلهای صفحهبندی با استفاده از Bootstrap 4.
Alert TagHelper:
برای ایجاد هشدارهای Bootstrap با استفاده از HTML ساده.
Language Navigation TagHelper:
برای ایجاد منوی گزینش زبان با استفاده از فلگهای زبان.
Localization Validation Scripts TagHelper:
برای اضافه کردن اسکریپتهای محلی برای اعتبارسنجی ورودیهای محلی مانند اعداد کسری، تاریخها و غیره.
برای اضافه کردن این مجموعهها به DataBaseContext خود، باید کلاس DbContext خود را ویرایش کنید. این کلاس به عنوان نمایی از دیتابیس شما عمل میکند و شامل DbSet هایی است که نمایانگر جداول دیتابیس هستند.
مراحل:
باز کردن کلاس DataContext (یا هر نامی که برای کلاس DbContext خود انتخاب کردهاید):
csharp
public class DataBaseContext : DbContext, IDataBaseContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<ProductImages> ProductImages { get; set; }
public DbSet<ProductFeatures> ProductFeatures { get; set; }
}
اطمینان از وجود تنظیمات در فایل Startup.cs:
در فایل Startup.cs مطمئن شوید که DbContext شما به درستی تنظیم شده است:
csharp
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
// سایر تنظیمات
}
ایجاد یا بروزرسانی Migrationها:
برای اعمال تغییرات در دیتابیس، باید Migration ایجاد کنید و دیتابیس خود را بهروزرسانی کنید.
دستور زیر را در کنسول Package Manager اجرا کنید:
bash
Add-Migration AddProductEntities
Update-Database
توضیحات:
DbSet<Product> Products:
این خط کد یک جدول برای نگهداری اطلاعات محصولات ایجاد میکند.
DbSet<ProductImages> ProductImages:
این خط کد یک جدول برای نگهداری تصاویر محصولات ایجاد میکند.
DbSet<ProductFeatures> ProductFeatures:
این خط کد یک جدول برای نگهداری ویژگیهای محصولات ایجاد میکند.
فایل ApplicationDbContext (یا هر نامی که برای کلاس DbContext خود انتخاب کردهاید) باید شامل تمام DbSet هایی باشد که نمایانگر جداول دیتابیس شما هستند.
با این مراحل، شما توانستهاید مجموعههای Products، ProductImages و ProductFeatures را به DataBaseContext خود اضافه کنید و آنها را در دیتابیس خود ایجاد کنید.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در packing manager console عبارت Add-Migration Test یا هر نامی که قابل فهم باشد و بعد Update-Datab
بعد اضافه کردن مایگریشن نام جدید و بعد آپدیدت دیتابیس
بیایید کد ProductsController را که برای نمایش لیست محصولات و جزئیات هر محصول استفاده میشود بررسی کنیم.
توضیحات کد:
تعریف کلاس:
csharp
public class ProductsController : Controller
{
private readonly IProductFacad _productFacad;
public ProductsController(IProductFacad productFacad)
{
_productFacad = productFacad;
}
}
کلاس ProductsController از کلاس پایه Controller ارثبری میکند.
یک فیلد خصوصی _productFacad از نوع IProductFacad تعریف شده است.
سازنده کلاس ProductsController فیلد _productFacad را با استفاده از تزریق وابستگی مقداردهی اولیه میکند.
متد Index:
csharp
public IActionResult Index(int page = 1)
{
return View(_productFacad.GetProductForSiteService.Execute(page).Data);
}
این متد برای نمایش لیست محصولات استفاده میشود.
پارامتر page شماره صفحه فعلی را مشخص میکند و مقدار پیشفرض آن ۱ است.
از سرویس GetProductForSiteService برای دریافت لیست محصولات صفحهبندی شده استفاده میکند.
دادههای دریافت شده را به ویو ارسال میکند.
متد Detail:
csharp
public IActionResult Detail(long Id)
{
return View(_productFacad.GetProductDetailForSiteService.Execute(Id).Data);
}
این متد برای نمایش جزئیات یک محصول خاص استفاده میشود.
پارامتر Id شناسه محصول را مشخص میکند.
از سرویس GetProductDetailForSiteService برای دریافت جزئیات محصول استفاده میکند.
دادههای دریافت شده را به ویو ارسال میکند.
نتیجهگیری:
کنترلر ProductsController به شما امکان میدهد تا لیست محصولات و جزئیات هر محصول را در سایت خود نمایش دهید. شامل دو متد Index برای نمایش لیست محصولات به صورت صفحهبندی شده و Detail برای نمایش جزئیات یک محصول خاص است. این متدها از سرویسهای مختلف ProductFacad برای دریافت دادههای مورد نیاز استفاده میکنند و آنها را به ویو مربوطه ارسال میکنند.
بیایید کد ویوی نمایش لیست محصولات را که برای نمایش آرشیو محصولات در سایت استفاده میشود بررسی کنیم.
توضیحات کد:
اضافه کردن فضای نامها و مدل:
csharp
@using Test_Store.Application.Services.Products.Queries.GetProductForSite;
@model ResultProductForSiteDto;
@using
برای استفاده از فضای نام سرویسهای مورد نیاز برای دریافت لیست محصولات.
@model
برای تعریف مدل دادهای که به ویو ارسال میشود. در اینجا مدل ResultProductForSiteDto است که شامل لیست محصولات و سایر اطلاعات مربوط به صفحهبندی است.
ViewData و Layout:
csharp
@{
ViewData["Title"] = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
ViewData["Title"]:
عنوان صفحه را به "Index" تنظیم میکند.
Layout:
از Layout مشخص شده برای این صفحه استفاده میکند.
ساختار اصلی HTML:
بخشهای مختلف صفحه شامل هدر، بدنه، و نمایش لیست محصولات.
نمایش آرشیو محصولات:
html
<div class="col-lg-12 col-md-12 col-xs-12 pl">
<div class="shop-archive-content mt-3 d-block">
<div class="archive-header">
<h2 class="archive-header-title">آرشیو محصولات</h2>
<div class="sort-tabs mt-0 d-inline-block pr">
<h4>مرتبسازی بر اساس :</h4>
</div>
<div class="nav-sort-tabs-res">
<ul class="nav sort-tabs-options" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="Most-visited-tab" data-toggle="tab" href="#Most-visited" role="tab" aria-controls="Most-visited" aria-selected="true">پربازدیدترین</a>
</li>
<li class="nav-item">
<a class="nav-link" id="Bestselling-tab" data-toggle="tab" href="#Bestselling" role="tab" aria-controls="Bestselling" aria-selected="false">پرفروشترین</a>
</li>
<li class="nav-item">
<a class="nav-link" id="Most-Popular-tab" data-toggle="tab" href="#Most-Popular" role="tab" aria-controls="Most-Popular" aria-selected="false">محبوبترین</a>
</li>
<li class="nav-item">
<a class="nav-link" id="newest-tab" data-toggle="tab" href="#newest" role="tab" aria-controls="newest" aria-selected="false">جدیدترین</a>
</li>
<li class="nav-item">
<a class="nav-link" id="cheapest-tab" data-toggle="tab" href="#cheapest" role="tab" aria-controls="cheapest" aria-selected="false">ارزانترین</a>
</li>
<li class="nav-item">
<a class="nav-link" id="most-expensive-tab" data-toggle="tab" href="#most-expensive" role="tab" aria-controls="most-expensive" aria-selected="false">گرانترین</a>
</li>
</ul>
</div>
</div>
<div class="product-items">
<div class="tab-content" id="myTabContent">
@foreach (var item in Model.Products)
{
<div class="tab-pane fade show active" id="Most-visited" role="tabpanel" aria-labelledby="Most-visited-tab">
<div class="row">
<div class="col-lg-3 col-md-3 col-xs-12 order-1 d-block mb-3">
<section class="product-box product product-type-simple">
<div class="thumb">
<a href="~/products/detail/@item.Id" class="d-block">
<div class="product-rate">
@for (int i = 1; i <= item.Star; i++)
{
<i class="fa fa-star active"></i>
}
@for (int i = 1; i <= (5 - item.Star); i++)
{
<i class="fa fa-star"></i>
}
</div>
<img src="~/@item.ImageSrc">
</a>
</div>
<div class="title">
<a href="~/products/detail/@item.Id">@item.Title</a>
</div>
<div class="price">
<span class="amount">
@item.Price.ToString("n0")
<span>تومان</span>
</span>
</div>
</section>
</div>
</div>
</div>
}
</div>
</div>
<div class="pagination-product">
<nav aria-label="Page navigation example">
<ul class="pagination">
<li class="page-item">
<a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li class="page-item">
<a class="page-link active" href="#">1</a>
</li>
<li class="page-item">
<a class="page-link" href="#">2</a>
</li>
<li class="page-item">
<a class="page-link" href="#">3</a>
</li>
<li class="page-item">
<a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
هدر صفحه:
شامل عنوان صفحه و تبهای مرتبسازی براساس معیارهای مختلف (پربازدیدترین، پرفروشترین، محبوبترین، جدیدترین، ارزانترین، گرانترین).
نمایش محصولات:
از foreach برای پیمایش مدل (لیست محصولات) و نمایش اطلاعات هر محصول استفاده شده است.
هر محصول شامل تصویر، عنوان، نرخبندی (ستارهها)، و قیمت است.
تبهای مرتبسازی براساس معیارهای مختلف استفاده شدهاند تا کاربران بتوانند محصولات را بر اساس معیارهای مختلف مشاهده کنند.
صفحهبندی (Pagination):
از عناصر HTML و CSS برای نمایش ناوبری صفحات استفاده شده است.
به کاربران این امکان را میدهد تا بین صفحات مختلف محصولات جابجا شوند.
نتیجهگیری:
این کد به شما امکان میدهد تا لیست محصولات را به صورت آرشیوی و با قابلیت مرتبسازی بر اساس معیارهای مختلف نمایش دهید. شامل تبهای مرتبسازی، نمایش محصولات به همراه تصویر و اطلاعات مرتبط، و ناوبری صفحات است. این طراحی به کاربران کمک میکند تا به راحتی محصولات مورد نظر خود را بیابند و مشاهده کنند.
بیایید این کد را که برای نمایش جزئیات یک محصول خاص در سایت استفاده میشود بررسی کنیم.
توضیحات کد:
اضافه کردن فضای نامها و مدل:
csharp
@using Test_Store.Application.Services.Products.Queries.GetProductDetailForSite;
@model ProductDetailForSiteDto;
@using
برای استفاده از فضای نام سرویسهای مورد نیاز برای دریافت جزئیات محصول.
@model
برای تعریف مدل دادهای که به ویو ارسال میشود. در اینجا مدل ProductDetailForSiteDto است که شامل جزئیات محصول است.
ViewData و Layout:
csharp
@{
ViewData["Title"] = "Detail";
Layout = "~/Views/Shared/_Layout.cshtml";
}
ViewData["Title"]:
عنوان صفحه را به "Detail" تنظیم میکند.
Layout: از Layout مشخص شده برای این صفحه استفاده میکند.
ساختار اصلی HTML:
بخشهای مختلف صفحه شامل مدال، گالری تصاویر، عنوان محصول، ویژگیها، نقد و بررسی، و مشخصات فنی.
نمایش تصاویر محصول در مدال (Modal):
html
<div class="modal fade" id="more-product" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered more-product" role="document">
<div class="modal-content">
<div class="modal-body">
<div id="custom-events">
@foreach (var item in Model.Images)
{
<a href="~/@item">
<img src="~/@item" />
</a>
}
</div>
</div>
</div>
</div>
</div>
این بخش شامل یک مدال (Modal) است که تصاویر محصول را نمایش میدهد.
از @foreach برای پیمایش مدل (لیست تصاویر) و نمایش هر تصویر استفاده شده است.
گالری تصاویر محصول:
html
<div class="gallery-item">
<div class="gallery-img">
<a href="#">
<img class="zoom-img" id="img-product-zoom" src="~/@Model.Images.FirstOrDefault()"
data-zoom-image="/@Model.Images.FirstOrDefault()" width="411" />
<div id="gallery_01f" style="width:420px;float:right;">
</a>
<ul class="gallery-items owl-carousel owl-theme" id="gallery-slider">
@foreach (var item in Model.Images)
{
<li class="item">
<a href="#" class="elevatezoom-gallery active" data-update=""
data-image="/@item"
data-zoom-image="/@item">
<img src="~/@item" width="100" />
</a>
</li>
}
</ul>
</div>
</div>
این بخش شامل گالری تصاویر محصول است که از owl-carousel برای نمایش تصاویر به صورت اسلایدری استفاده میشود.
تصویر اصلی با قابلیت زوم و تصاویر کوچک در پایین آن نمایش داده میشوند.
عنوان و مشخصات کلی محصول:
html
<div class="product-headline">
<h1 class="product-title">
@Model.Title
</h1>
<div class="product-guaranteed text-success">
12
<span>فروش موفق</span>
</div>
</div>
این بخش شامل عنوان محصول و تعداد فروش موفق آن است.
ویژگیهای محصول:
html
<div class="product-params pt-3">
<ul data-title="ویژگیهای محصول">
@foreach (var item in Model.Features.Take(5))
{
<li>
<span>@item.DisplayName: </span>
<span>@item.Value</span>
</li>
}
</ul>
</div>
این بخش شامل لیستی از ویژگیهای محصول است که فقط پنج ویژگی اول نمایش داده میشوند.
نقد و بررسی اجمالی محصول:
html
<h2 class="params-headline">نقد و بررسی اجمالی</h2>
<section class="content-expert-summary">
<div class="mask pm-3">
<div class="mask-text">
@Model.Description
</div>
<a href="#" class="mask-handler">
<span class="show-more">+ ادامه مطلب</span>
<span class="show-less">- بستن</span>
</a>
<div class="shadow-box"></div>
</div>
</section>
این بخش شامل نقد و بررسی اجمالی محصول است که در صورت طولانی بودن متن، قابلیت نمایش ادامه متن با کلیک روی لینک "ادامه مطلب" فراهم میشود.
مشخصات فنی محصول:
html
<article>
<h2 class="params-headline">
مشخصات فنی
<span>Samsung Galaxy Note 10 Dual SIM 256GB Mobile Phone</span>
</h2>
<section>
<ul class="params-list">
@foreach (var item in Model.Features)
{
<li class="params-list-item">
<div class="params-list-key">
<span class="block"> @item.DisplayName </span>
</div>
<div class="params-list-value">
<span class="block">
@item.Value
</span>
</div>
</li>
}
</ul>
</section>
</article>
این بخش شامل لیست کامل ویژگیهای فنی محصول است.
بخش اسکریپتها:
csharp
@section Scripts
{
<script src="~/SiteTemplate/assets/js/vendor/lightgallery-all.js"></script>
<script src="~/SiteTemplate/assets/js/vendor/jquery.ez-plus.js"></script>
}
این بخش شامل لینک اسکریپتهای لازم برای نمایش گالری تصاویر و قابلیت زوم تصاویر است.
نتیجهگیری:
این کد به شما امکان میدهد تا جزئیات کامل یک محصول را به همراه تصاویر، ویژگیها، نقد و بررسی، و مشخصات فنی در سایت خود نمایش دهید. شامل مدال برای نمایش تصاویر، گالری تصاویر محصول، عنوان و مشخصات کلی، ویژگیها، نقد و بررسی اجمالی، و مشخصات فنی محصول است. این طراحی به کاربران کمک میکند تا به راحتی به اطلاعات کامل و دقیقی از محصول دسترسی داشته باشند.
بیایید کد این سرویس را که برای دریافت لیست محصولات جهت نمایش در سایت استفاده میشود بررسی کنیم.
توضیحات کد:
تعریف اینترفیس IGetProductForSiteService:
csharp
public interface IGetProductForSiteService
{
ResultDto<ResultProductForSiteDto> Execute(int Page);
}
این اینترفیس یک متد Execute تعریف میکند که یک پارامتر Page دریافت میکند و یک ResultDto<ResultProductForSiteDto> را بازمیگرداند.
کلاس GetProductForSiteService:
فیلدهای خصوصی و سازنده:
csharp
public class GetProductForSiteService : IGetProductForSiteService
{
private readonly IDataBaseContext _context;
public GetProductForSiteService(IDataBaseContext context)
{
_context = context;
}
}
این کلاس شامل یک فیلد خصوصی _context از نوع IDataBaseContext و یک سازنده است که این فیلد را مقداردهی اولیه میکند.
متد Execute:
csharp
public ResultDto<ResultProductForSiteDto> Execute(int Page)
{
int totalRow = 0;
var products = _context.Products
.Include(p => p.ProductImages)
.ToPaged(Page, 5, out totalRow);
Random rd = new Random();
return new ResultDto<ResultProductForSiteDto>
{
Data = new ResultProductForSiteDto
{
TotalRow = totalRow,
Products = products.Select(p => new ProductForSiteDto
{
Id = p.Id,
Star = rd.Next(1, 5),
Title = p.Name,
ImageSrc = p.ProductImages.FirstOrDefault().Src,
Price = p.Price
}).ToList(),
},
IsSuccess = true,
};
}
این متد لیست محصولات را از دیتابیس دریافت میکند و سپس آنها را به صورت صفحهبندی شده (paging) بازمیگرداند.
از Include برای بارگذاری اطلاعات مرتبط (تصاویر محصول) استفاده میشود.
متد ToPaged برای انجام عملیات صفحهبندی استفاده میشود و totalRow تعداد کل رکوردها را محاسبه میکند.
از کلاس Random برای ایجاد یک عدد تصادفی بین ۱ تا ۵ برای ستارههای محصول استفاده میشود.
نتیجه به عنوان یک ResultDto<ResultProductForSiteDto> شامل محصولات صفحهبندی شده و تعداد کل رکوردها بازگردانده میشود.
کلاس ResultProductForSiteDto:
csharp
public class ResultProductForSiteDto
{
public List<ProductForSiteDto> Products { get; set; }
public int TotalRow { get; set; }
}
این کلاس شامل جزئیات مربوط به صفحهبندی مانند تعداد کل رکوردها و لیست محصولات است.
کلاس ProductForSiteDto:
csharp
public class ProductForSiteDto
{
public long Id { get; set; }
public string Title { get; set; }
public string ImageSrc { get; set; }
public int Star { get; set; }
public int Price { get; set; }
}
این کلاس شامل اطلاعات محصول مانند شناسه، نام، مسیر تصویر، تعداد ستارهها و قیمت است.
نتیجهگیری:
این کد به شما امکان میدهد تا لیست محصولات را به صورت صفحهبندی شده برای نمایش در سایت دریافت کنید. از اینترفیس IGetProductForSiteService برای تعریف قرارداد و از کلاس GetProductForSiteService برای پیادهسازی این قرارداد استفاده میشود. اطلاعات محصولات شامل جزئیات صفحهبندی و محصولات بازگردانده شده است که به کاربران سایت کمک میکند تا به راحتی محصولات را مشاهده کنند.
بیایید کد سرویس GetProductDetailForSiteService و اینترفیس IGetProductDetailForSiteService را که برای دریافت جزئیات محصول جهت نمایش در سایت استفاده میشود بررسی کنیم.
توضیحات کد:
تعریف اینترفیس IGetProductDetailForSiteService:
csharp
public interface IGetProductDetailForSiteService
{
ResultDto<ProductDetailForSiteDto> Execute(long Id);
}
این اینترفیس یک متد Execute تعریف میکند که یک پارامتر Id دریافت میکند و یک ResultDto<ProductDetailForSiteDto> را بازمیگرداند.
کلاس GetProductDetailForSiteService:
فیلدهای خصوصی و سازنده:
csharp
public class GetProductDetailForSiteService : IGetProductDetailForSiteService
{
private readonly IDataBaseContext _context;
public GetProductDetailForSiteService(IDataBaseContext context)
{
_context = context;
}
}
این کلاس شامل یک فیلد خصوصی _context از نوع IDataBaseContext و یک سازنده است که این فیلد را مقداردهی اولیه میکند.
متد Execute:
csharp
public ResultDto<ProductDetailForSiteDto> Execute(long Id)
{
var Product = _context.Products
.Include(p => p.Category)
.ThenInclude(p => p.ParentCategory)
.Include(p => p.ProductImages)
.Include(p => p.ProductFeatures)
.Where(p => p.Id == Id).FirstOrDefault();
if (Product == null)
{
throw new Exception("Product Not Found.....");
}
return new ResultDto<ProductDetailForSiteDto>()
{
Data = new ProductDetailForSiteDto
{
Brand = Product.Brand,
Category = $"{Product.Category.ParentCategory.Name} - {Product.Category.Name}",
Description = Product.Description,
Id = Product.Id,
Price = Product.Price,
Title = Product.Name,
Images = Product.ProductImages.Select(p => p.Src).ToList(),
Features = Product.ProductFeatures.Select(p => new ProductDetailForSite_FeaturesDto
{
DisplayName = p.DisplayName,
Value = p.Value,
}).ToList(),
},
IsSuccess = true,
};
}
این متد اطلاعات محصول را با استفاده از شناسه محصول Id از دیتابیس دریافت میکند.
از Include و ThenInclude برای بارگذاری اطلاعات مرتبط استفاده میشود (مثلاً دستهبندیها، ویژگیهای محصول، تصاویر محصول).
اگر محصول مورد نظر پیدا نشود، یک استثناء (Exception) پرتاب میشود.
نتیجه به عنوان یک ResultDto<ProductDetailForSiteDto> شامل جزئیات محصول بازگردانده میشود.
کلاس ProductDetailForSiteDto:
csharp
public class ProductDetailForSiteDto
{
public long Id { get; set; }
public string Title { get; set; }
public string Brand { get; set; }
public string Category { get; set; }
public string Description { get; set; }
public int Price { get; set; }
public List<string> Images { get; set; }
public List<ProductDetailForSite_FeaturesDto> Features { get; set; }
}
این کلاس شامل جزئیات محصول مانند شناسه، نام، برند، دستهبندی، توضیحات، قیمت، تصاویر و ویژگیهای محصول است.
کلاس ProductDetailForSite_FeaturesDto:
csharp
public class ProductDetailForSite_FeaturesDto
{
public string DisplayName { get; set; }
public string Value { get; set; }
}
این کلاس شامل اطلاعات ویژگیهای محصول است که شامل نام نمایشی ویژگی و مقدار آن است.
نتیجهگیری:
این کد به شما امکان میدهد تا جزئیات کامل یک محصول را با استفاده از شناسه آن دریافت کنید. از اینترفیس IGetProductDetailForSiteService برای تعریف قرارداد و از کلاس GetProductDetailForSiteService برای پیادهسازی این قرارداد استفاده میشود. جزئیات محصول شامل ویژگیها، تصاویر، دستهبندی، و سایر اطلاعات مرتبط است که به کاربران سایت کمک میکند تا اطلاعات کامل و دقیقی از محصولات داشته باشند.
بیایید کد کلاس ProductFacad را که به عنوان فاساد (Facade) برای مدیریت عملیاتهای مرتبط با محصولات در سیستم استفاده میشود، بررسی کنیم.
توضیحات کد:
تعریف کلاس:
csharp
public class ProductFacad : IProductFacad
{
private readonly IDataBaseContext _context;
private readonly IHostingEnvironment _environment;
public ProductFacad(IDataBaseContext context, IHostingEnvironment hostingEnvironment)
{
_context = context;
_environment = hostingEnvironment;
}
}
این کلاس ProductFacad از اینترفیس IProductFacad پیادهسازی میکند.
دو فیلد خصوصی _context و _environment تعریف شدهاند که از طریق سازنده مقداردهی میشوند.
_context برای دسترسی به دیتابیس و _environment برای دسترسی به محیط میزبانی استفاده میشود.
سرویسهای مختلف فاساد:
AddNewCategoryService:
csharp
private AddNewCategoryService _addNewCategory;
public AddNewCategoryService AddNewCategoryService
{
get
{
return _addNewCategory = _addNewCategory ?? new AddNewCategoryService(_context);
}
}
این ویژگی یک نمونه از AddNewCategoryService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.
IGetCategoriesService:
csharp
private IGetCategoriesService _getCategoriesService;
public IGetCategoriesService GetCategoriesService
{
get
{
return _getCategoriesService = _getCategoriesService ?? new GetCategoriesService(_context);
}
}
این ویژگی یک نمونه از IGetCategoriesService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.
AddNewProductService:
csharp
private AddNewProductService _addNewProductService;
public AddNewProductService AddNewProductService
{
get
{
return _addNewProductService = _addNewProductService ?? new AddNewProductService(_context, _environment);
}
}
این ویژگی یک نمونه از AddNewProductService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.
IGetAllCategoriesService:
csharp
private IGetAllCategoriesService _getAllCategoriesService;
public IGetAllCategoriesService GetAllCategoriesService
{
get
{
return _getAllCategoriesService = _getAllCategoriesService ?? new GetAllCategoriesService(_context);
}
}
این ویژگی یک نمونه از IGetAllCategoriesService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.
IGetProductForAdminService:
csharp
private IGetProductForAdminService _getProductForAdminService;
public IGetProductForAdminService GetProductForAdminService
{
get
{
return _getProductForAdminService = _getProductForAdminService ?? new GetProductForAdminService(_context);
}
}
این ویژگی یک نمونه از IGetProductForAdminService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.
IGetProductDetailForAdminService:
csharp
private IGetProductDetailForAdminService _getProductDetailForAdminService;
public IGetProductDetailForAdminService GetProductDetailForAdminService
{
get
{
return _getProductDetailForAdminService = _getProductDetailForAdminService ?? new GetProductDetailForAdminService(_context);
}
}
این ویژگی یک نمونه از IGetProductDetailForAdminService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.
IGetProductForSiteService:
csharp
private IGetProductForSiteService _getProductForSiteService;
public IGetProductForSiteService GetProductForSiteService
{
get
{
return _getProductForSiteService = _getProductForSiteService ?? new GetProductForSiteService(_context);
}
}
این ویژگی یک نمونه از IGetProductForSiteService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.
IGetProductDetailForSiteService:
csharp
private IGetProductDetailForSiteService _getProductDetailForSiteService;
public IGetProductDetailForSiteService GetProductDetailForSiteService
{
get
{
return _getProductDetailForSiteService = _getProductDetailForSiteService ?? new GetProductDetailForSiteService(_context);
}
}
این ویژگی یک نمونه از IGetProductDetailForSiteService را بازمیگرداند. اگر نمونه قبلاً ایجاد نشده باشد، آن را ایجاد میکند.