پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
این متد وظیفه آپلود فایل تصویری را بر عهده دارد:
ایجاد پوشه برای ذخیره تصاویر: اگر پوشه مورد نظر وجود نداشته باشد، آن را ایجاد میکند.
بررسی فایل ورودی: بررسی میکند که فایل ورودی معتبر باشد و اندازه آن صفر نباشد.
ایجاد نام منحصر به فرد برای فایل: نام فایل را با استفاده از زمان جاری و نام اصلی فایل ایجاد میکند.
ذخیره فایل در پوشه: فایل را در مسیر مشخص شده ذخیره میکند.
بازگرداندن نتیجه آپلود: نتیجه آپلود را به صورت شیء UploadDto که شامل مسیر فایل ذخیره شده و وضعیت موفقیت عملیات است، برمیگرداند.
۴. کلاس Slider
کلاس: Slider این کلاس شامل ویژگیهایی مانند link و Src است که اطلاعات مربوط به اسلایدر را نگهداری میکند. این اطلاعات شامل مسیر فایل تصویر و لینک مرتبط با اسلایدر است.
نتیجهگیری
این کد به شما امکان میدهد که یک اسلایدر جدید را به پایگاه داده اضافه کنید و اطلاعات مربوط به آن را ذخیره کنید. این روش ساختاریافته و ماژولار به شما کمک میکند تا عملیات افزودن اسلایدر را به صورت مرتب و بهینه انجام دهید.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
۱. کلاس HomePageImages
کلاس: HomePageImages
csharp
public class HomePageImages : BaseEntity
{
public string Src { get; set; }
public string link { get; set; }
public ImageLocation ImageLocation { get; set; }
}
این کلاس شامل اطلاعات مربوط به تصاویر صفحه اصلی است. همچنین از کلاس پایهای به نام BaseEntity ارثبری میکند که احتمالاً شامل ویژگیها و رفتارهای مشترک بین همه موجودیتهای (entities) پایگاه داده است. این کلاس دارای سه ویژگی است:
Src:
این ویژگی مسیر فایل تصویر را نگهداری میکند.
link:
این ویژگی لینک مرتبط با تصویر را نگهداری میکند.
ImageLocation:
این ویژگی محل قرارگیری تصویر در صفحه اصلی را مشخص میکند که از نوع شمارشی (enum) به نام ImageLocation است.
۲. شمارش ImageLocation
شمارش: ImageLocation
csharp
public enum ImageLocation
{
L1 = 0,
L2 = 1,
R1 = 3,
CenterFullScreen = 4,
G1 = 5,
G2 = 6,
}
این شمارش انواع مختلف محل قرارگیری تصویر در صفحه اصلی را مشخص میکند. هر مقدار در این شمارش یک مکان خاص را نشان میدهد:
L1 = 0:
مکان ۱ سمت چپ.
L2 = 1:
مکان ۲ سمت چپ.
R1 = 3:
مکان ۱ سمت راست.
CenterFullScreen = 4:
مکان مرکزی تمام صفحه.
G1 = 5: مکان ۱ در بخش G.
G2 = 6: مکان ۲ در بخش G.
نتیجهگیری
این کد شامل یک کلاس به نام HomePageImages است که اطلاعات مربوط به تصاویر صفحه اصلی را نگهداری میکند. این کلاس شامل ویژگیهایی برای نگهداری مسیر فایل تصویر، لینک مرتبط و محل قرارگیری تصویر در صفحه اصلی است. شمارش ImageLocation نیز انواع مختلف محل قرارگیری تصویر را مشخص میکند. این روش به شما امکان میدهد تصاویر را به صورت ساختاریافته و منظم مدیریت کنید.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
کلاس Slider
کلاس: Slider
csharp
public class Slider : BaseEntity
{
public string Src { get; set; }
public string link { get; set; }
}
این کلاس شامل اطلاعات مربوط به یک اسلایدر است و از کلاس پایهای به نام BaseEntity ارثبری میکند که احتمالاً شامل ویژگیها و رفتارهای مشترک بین همه موجودیتهای (entities) پایگاه داده است. کلاس Slider دارای دو ویژگی است:
Src:
نوع: string
توضیح: این ویژگی مسیر فایل تصویر اسلایدر را نگهداری میکند. این مسیر معمولاً به عنوان یک رشته حاوی مسیر نسبی یا مطلق به فایل تصویری است که در اسلایدر نمایش داده میشود.
link:
نوع: string
توضیح: این ویژگی لینک مرتبط با تصویر اسلایدر را نگهداری میکند. این لینک معمولاً به عنوان یک رشته حاوی URL است که کاربر را به صفحه یا وبسایت مرتبط هدایت میکند.
نتیجهگیری
این کد به شما امکان میدهد که اطلاعات مربوط به اسلایدر را در یک کلاس ساختاریافته ذخیره کنید. ویژگیهای Src و link مسیر تصویر و لینک مرتبط با اسلایدر را نگهداری میکنند. از آنجا که این کلاس از BaseEntity ارثبری کرده است، میتوانیم فرض کنیم که ویژگیها و رفتارهای مشترک بین تمام موجودیتهای پایگاه داده مانند شناسه (ID)، زمان ایجاد و زمان بهروزرسانی نیز به ارث برده میشود.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد را بررسی و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
۱. اتریبیوت Area
کد:
csharp
[Area("Admin")]
این اتریبیوت مشخص میکند که این کنترلر مربوط به منطقه (Area) "Admin" است. مناطق (Areas) در ASP.NET Core برای سازماندهی بخشهای مختلف برنامه به صورت جداگانه استفاده میشوند. با استفاده از مناطق، میتوانید بخشهای مدیریتی، کاربری، و دیگر بخشها را به صورت جداگانه مدیریت کنید.
۲. کلاس SlidersController
کلاس: SlidersController
csharp
public class SlidersController : Controller
{
private readonly IAddNewSliderService _addNewSliderService;
public SlidersController(IAddNewSliderService addNewSliderService)
{
_addNewSliderService = addNewSliderService;
}
public IActionResult Index()
{
return View();
}
public IActionResult Add()
{
return View();
}
[HttpPost]
public IActionResult Add(IFormFile file, string link)
{
_addNewSliderService.Execute(file, link);
return View();
}
}
توضیح بخشهای مختلف کلاس:
خصوصی _addNewSliderService:
این فیلد به صورت خصوصی تعریف شده است و سرویس IAddNewSliderService را نگهداری میکند.
هدف: استفاده از سرویس افزودن اسلایدر جدید.
سازنده SlidersController:
کد:
csharp
public SlidersController(IAddNewSliderService addNewSliderService)
{
_addNewSliderService = addNewSliderService;
}
این سازنده فیلد خصوصی _addNewSliderService را مقداردهی میکند.
هدف: تزریق وابستگی (Dependency Injection) و فراهم کردن استفاده از سرویس IAddNewSliderService.
اکشن Index:
کد:
csharp
public IActionResult Index()
{
return View();
}
این متد یک اکشن است که ویوی مربوط به صفحه اصلی اسلایدرها را باز میکند.
هدف: نمایش صفحه اصلی اسلایدرها.
اکشن Add (GET):
کد:
csharp
public IActionResult Add()
{
return View();
}
این متد یک اکشن GET است که ویوی مربوط به افزودن اسلایدر جدید را باز میکند.
هدف: نمایش فرم افزودن اسلایدر جدید.
اکشن Add (POST):
کد:
csharp
[HttpPost]
public IActionResult Add(IFormFile file, string link)
{
_addNewSliderService.Execute(file, link);
return View();
}
این متد یک اکشن POST است که درخواست افزودن اسلایدر جدید را پردازش میکند.
پارامترها:
IFormFile file: فایل تصویر اسلایدر.
string link: لینک مرتبط با اسلایدر.
عملیات:
استفاده از سرویس IAddNewSliderService برای اجرای افزودن اسلایدر جدید.
بازگرداندن ویوی افزودن اسلایدر.
هدف: افزودن اسلایدر جدید به سیستم.
نتیجهگیری
این کنترلر به مدیریت اسلایدرها در بخش مدیریتی (Admin) برنامه میپردازد. شامل اکشنهایی برای نمایش صفحه اصلی اسلایدرها، نمایش فرم افزودن اسلایدر جدید، و پردازش درخواست افزودن اسلایدر جدید میباشد. این کنترلر از سرویس IAddNewSliderService استفاده میکند تا عملیات افزودن اسلایدر را به صورت جداگانه انجام دهد.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
۱. اتریبیوت Area
کد:
csharp
[Area("Admin")]
این اتریبیوت مشخص میکند که این کنترلر مربوط به منطقه (Area) "Admin" است. مناطق (Areas) در ASP.NET Core برای سازماندهی بخشهای مختلف برنامه به صورت جداگانه استفاده میشوند. با استفاده از مناطق، میتوانید بخشهای مدیریتی، کاربری، و دیگر بخشها را به صورت جداگانه مدیریت کنید.
۲. کلاس HomePageImagesController
کلاس: HomePageImagesController
csharp
public class HomePageImagesController : Controller
{
private readonly IAddHomePageImagesService _addHomePageImagesService;
public HomePageImagesController(IAddHomePageImagesService addHomePageImagesService)
{
_addHomePageImagesService = addHomePageImagesService;
}
public IActionResult Index()
{
return View();
}
public IActionResult Add()
{
return View();
}
[HttpPost]
public IActionResult Add(IFormFile file, string link, ImageLocation imageLocation)
{
_addHomePageImagesService.Execute(new requestAddHomePageImagesDto
{
file = file,
ImageLocation = imageLocation,
Link = link,
});
return View();
}
}
توضیح بخشهای مختلف کلاس:
خصوصی _addHomePageImagesService:
این فیلد به صورت خصوصی تعریف شده است و سرویس IAddHomePageImagesService را نگهداری میکند.
هدف: استفاده از سرویس افزودن تصاویر جدید به صفحه اصلی.
سازنده HomePageImagesController:
کد:
csharp
public HomePageImagesController(IAddHomePageImagesService addHomePageImagesService)
{
_addHomePageImagesService = addHomePageImagesService;
}
این سازنده فیلد خصوصی _addHomePageImagesService را مقداردهی میکند.
هدف: تزریق وابستگی (Dependency Injection) و فراهم کردن استفاده از سرویس IAddHomePageImagesService.
اکشن Index:
کد:
csharp
public IActionResult Index()
{
return View();
}
این متد یک اکشن است که ویوی مربوط به صفحه اصلی تصاویر صفحه اصلی را باز میکند.
هدف: نمایش صفحه اصلی تصاویر صفحه اصلی.
اکشن Add (GET):
کد:
csharp
public IActionResult Add()
{
return View();
}
این متد یک اکشن GET است که ویوی مربوط به افزودن تصویر جدید به صفحه اصلی را باز میکند.
هدف: نمایش فرم افزودن تصویر جدید به صفحه اصلی.
اکشن Add (POST):
کد:
csharp
[HttpPost]
public IActionResult Add(IFormFile file, string link, ImageLocation imageLocation)
{
_addHomePageImagesService.Execute(new requestAddHomePageImagesDto
{
file = file,
ImageLocation = imageLocation,
Link = link,
});
return View();
}
این متد یک اکشن POST است که درخواست افزودن تصویر جدید به صفحه اصلی را پردازش میکند.
پارامترها:
IFormFile file: فایل تصویر.
string link: لینک مرتبط با تصویر.
ImageLocation imageLocation: محل قرارگیری تصویر در صفحه اصلی.
عملیات:
استفاده از سرویس IAddHomePageImagesService برای اجرای افزودن تصویر جدید.
بازگرداندن ویوی افزودن تصویر.
هدف: افزودن تصویر جدید به صفحه اصلی سیستم.
نتیجهگیری
این کنترلر به مدیریت تصاویر صفحه اصلی در بخش مدیریتی (Admin) برنامه میپردازد. شامل اکشنهایی برای نمایش صفحه اصلی تصاویر، نمایش فرم افزودن تصویر جدید، و پردازش درخواست افزودن تصویر جدید میباشد. این کنترلر از سرویس IAddHomePageImagesService استفاده میکند تا عملیات افزودن تصویر را به صورت جداگانه انجام دهد.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد ویو Razor را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
۱. افزودن Tag Helpers
کد:
html
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
این خط، Tag Helperهای مربوط به Microsoft.AspNetCore.Mvc.TagHelpers را به ویو اضافه میکند. Tag Helperها ابزارهای قدرتمندی در ASP.NET Core هستند که به شما امکان میدهند تگهای HTML را به صورت داینامیک و با استفاده از کدهای C# پردازش کنید.
۲. استفاده از فضای نام (Namespace)
کد:
html
@using Test_Store.Domain.Entities.HomePages
این خط، فضای نام Test_Store.Domain.Entities.HomePages را به ویو اضافه میکند. این کار به شما امکان میدهد که به کلاسها و Enumهای موجود در این فضای نام دسترسی داشته باشید.
۳. تنظیمات ViewData و Layout
کد:
html
@{
ViewData["Title"] = "Add";
Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";
}
این بلاک کد تنظیمات مربوط به ViewData و Layout ویو را مشخص میکند:
ViewData["Title"] = "Add";:
عنوان ویو را به "Add" تنظیم میکند.
Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";:
مسیر Layoutی که ویو باید از آن استفاده کند را تنظیم میکند. در اینجا Layout مربوط به بخش Admin است.
۴. ساختار HTML برای فرم
ساختار اصلی:
html
<section class="basic-elements">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<div class="card-title-wrap bar-success">
<h4 class="card-title mb-0">افزودن اسلایدر جدید</h4>
</div>
</div>
<div class="card-body">
<div class="px-3">
<div class="form">
<div class="form-body">
<form method="post" class="row" enctype="multipart/form-data">
این بخش ساختار اصلی HTML را تنظیم میکند و شامل تگهای مختلف برای طرحبندی و استایلدهی است. از کلاسهای Bootstrap برای طرحبندی استفاده میشود.
۵. انتخاب موقعیت نمایش تصویر
کد:
html
<div class="col-xl-3 col-lg-6 col-md-12 mb-1">
<fieldset class="form-group">
<label for="basicInput">موقعیت نمایش تصویر</label>
<select name="imageLocation" asp-items="@Html.GetEnumSelectList<ImageLocation>()"></select>
</fieldset>
</div>
این بخش شامل یک فیلد انتخاب (select) برای انتخاب موقعیت نمایش تصویر است:
name="imageLocation": نام فیلد انتخاب.
asp-items="@Html.GetEnumSelectList<ImageLocation>()":
از کمکهای Tag Helper برای ایجاد لیست انتخابی از مقادیر Enum ImageLocation استفاده میکند.
۶. فیلدهای ورودی برای لینک و تصویر
کد:
html
<div class="col-xl-3 col-lg-6 col-md-12 mb-1">
<fieldset class="form-group">
<label for="basicInput">آدرس لینک</label>
<input type="text" class="form-control" name="link">
</fieldset>
</div>
<div class="col-xl-3 col-lg-6 col-md-12 mb-1">
<fieldset class="form-group">
<label for="basicInput">تصویر</label>
<input type="file" name="file" />
</fieldset>
</div>
این بخش شامل دو فیلد ورودی است:
آدرس لینک:
name="link":
نام فیلد متن برای ورودی لینک.
class="form-control":
استفاده از کلاس Bootstrap برای استایلدهی.
تصویر:
name="file":
نام فیلد فایل برای انتخاب تصویر.
class="form-control":
استفاده از کلاس Bootstrap برای استایلدهی.
۷. دکمه ارسال فرم
کد:
html
<div class="col-xl-3 col-lg-12 col-md-12 mb-1">
<fieldset class="form-group">
<br />
<button class="btn btn-success col-md-12">آپلود تصویر</button>
</fieldset>
</div>
این بخش شامل دکمهای برای ارسال فرم است:
class="btn btn-success col-md-12":
استفاده از کلاسهای Bootstrap برای استایلدهی دکمه ارسال.
نتیجهگیری
این کد یک ویو برای افزودن اسلایدر جدید به صفحه اصلی ایجاد میکند. از Tag Helperها و کلاسهای Bootstrap برای استایلدهی و کارکرد بهتر استفاده میکند. فرم شامل فیلدهایی برای انتخاب موقعیت نمایش تصویر، وارد کردن آدرس لینک، انتخاب تصویر و دکمه ارسال فرم است.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد ویو Razor را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
۱. تنظیمات ViewData و Layout
کد:
html
@{
ViewData["Title"] = "Add";
Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";
}
این بلاک کد تنظیمات مربوط به ViewData و Layout ویو را مشخص میکند:
ViewData["Title"] = "Add";:
عنوان ویو را به "Add" تنظیم میکند.
Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";:
مسیر Layoutی که ویو باید از آن استفاده کند را تنظیم میکند. در اینجا Layout مربوط به بخش Admin است.
۲. ساختار HTML برای فرم
ساختار اصلی:
html
<section class="basic-elements">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<div class="card-title-wrap bar-success">
<h4 class="card-title mb-0">افزودن اسلایدر جدید</h4>
</div>
</div>
<div class="card-body">
<div class="px-3">
<div class="form">
<div class="form-body">
<form method="post" class="row" enctype="multipart/form-data">
این بخش ساختار اصلی HTML را تنظیم میکند و شامل تگهای مختلف برای طرحبندی و استایلدهی است. از کلاسهای Bootstrap برای طرحبندی استفاده میشود.
۳. فیلد ورودی برای لینک
کد:
html
<div class="col-xl-3 col-lg-6 col-md-12 mb-1">
<fieldset class="form-group">
<label for="basicInput">آدرس لینک</label>
<input type="text" class="form-control" name="link">
</fieldset>
</div>
این بخش شامل یک فیلد ورودی برای لینک است:
name="link":
نام فیلد متن برای ورودی لینک.
class="form-control":
استفاده از کلاس Bootstrap برای استایلدهی.
۴. فیلد ورودی برای تصویر
کد:
html
<div class="col-xl-3 col-lg-6 col-md-12 mb-1">
<fieldset class="form-group">
<label for="basicInput">تصویر</label>
<input type="file" name="file" />
</fieldset>
</div>
این بخش شامل یک فیلد ورودی برای انتخاب تصویر است:
name="file":
نام فیلد فایل برای انتخاب تصویر.
۵. دکمه ارسال فرم
کد:
html
<div class="col-xl-3 col-lg-4 col-md-12 mb-1">
<fieldset class="form-group">
<br />
<button class="btn btn-success col-md-12">آپلود تصویر</button>
</fieldset>
</div>
این بخش شامل دکمهای برای ارسال فرم است:
class="btn btn-success col-md-12":
استفاده از کلاسهای Bootstrap برای استایلدهی دکمه ارسال.
نتیجهگیری
این کد یک ویو برای افزودن اسلایدر جدید به صفحه اصلی ایجاد میکند. از کلاسهای Bootstrap برای استایلدهی و کارکرد بهتر استفاده میکند. فرم شامل فیلدهایی برای وارد کردن آدرس لینک، انتخاب تصویر و دکمه ارسال فرم است. این فرم به کاربر امکان میدهد که یک اسلایدر جدید را اضافه کند و اطلاعات مربوط به آن را به سرور ارسال کند.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کلاس ViewModel را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
کلاس HomePageViewModel
کلاس: HomePageViewModel
csharp
public class HomePageViewModel
{
public List<SliderDto> Sliders { get; set; }
public List<HomePageImagesDto> PageImages { get; set; }
public List<ProductForSiteDto> Camera { get; set; }
public List<ProductForSiteDto> Mobile { get; set; }
public List<ProductForSiteDto> Laptop { get; set; }
}
این کلاس یک ViewModel است که به منظور انتقال دادهها از کنترلر به ویو در صفحه اصلی استفاده میشود. ViewModel ها معمولاً برای تجمیع دادههایی که از مدلهای مختلف بدست میآیند، استفاده میشوند تا دادهها به صورت ساختاریافته به ویو ارسال شوند. کلاس HomePageViewModel دارای پنج ویژگی است که هرکدام لیستی از DTOهای مختلف را نگهداری میکند.
توضیح ویژگیها:
Sliders:
نوع: List<SliderDto>
توضیح: این ویژگی یک لیست از SliderDto را نگهداری میکند که شامل اطلاعات مربوط به اسلایدرهای صفحه اصلی است.
PageImages:
نوع: List<HomePageImagesDto>
توضیح: این ویژگی یک لیست از HomePageImagesDto را نگهداری میکند که شامل اطلاعات مربوط به تصاویر صفحه اصلی است.
Camera:
نوع: List<ProductForSiteDto>
توضیح: این ویژگی یک لیست از ProductForSiteDto را نگهداری میکند که شامل اطلاعات مربوط به محصولات دستهبندی دوربینها است.
Mobile:
نوع: List<ProductForSiteDto>
توضیح: این ویژگی یک لیست از ProductForSiteDto را نگهداری میکند که شامل اطلاعات مربوط به محصولات دستهبندی موبایلها است.
Laptop:
نوع: List<ProductForSiteDto>
توضیح: این ویژگی یک لیست از ProductForSiteDto را نگهداری میکند که شامل اطلاعات مربوط به محصولات دستهبندی لپتاپها است.
نتیجهگیری
این ViewModel برای انتقال دادههای صفحه اصلی از کنترلر به ویو استفاده میشود. ویژگیهای این کلاس شامل لیستهایی از اسلایدرها، تصاویر صفحه اصلی و محصولات در دستهبندیهای مختلف است. این روش به شما امکان میدهد که دادهها را به صورت سازمانیافته و ساختاریافته به ویو ارسال کنید و از آنها برای نمایش اطلاعات در صفحه اصلی استفاده کنید.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد کنترلر HomeController را بررسی و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
کلاس HomeController
کلاس: HomeController
csharp
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IGetSliderService _getSliderService;
private readonly IGetHomePageImagesService _homePageImagesService;
private readonly IProductFacad _productFacad;
public HomeController(ILogger<HomeController> logger
, IGetSliderService getSliderService
, IGetHomePageImagesService homePageImagesService
, IProductFacad productFacad)
{
_logger = logger;
_getSliderService = getSliderService;
_homePageImagesService = homePageImagesService;
_productFacad = productFacad;
}
public IActionResult Index()
{
HomePageViewModel homePage = new HomePageViewModel()
{
Sliders = _getSliderService.Execute().Data,
PageImages = _homePageImagesService.Execute().Data,
Camera = _productFacad.GetProductForSiteService.Execute(Ordering.theNewest
, null, 1, 6, 25).Data.Products,
};
return View(homePage);
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
توضیح بخشهای مختلف کلاس:
اعضای خصوصی (private)
ILogger<HomeController> _logger:
این عضو برای لاگگیری و ثبت رویدادها استفاده میشود.
IGetSliderService _getSliderService: این عضو برای دریافت اسلایدرهای صفحه اصلی استفاده میشود.
IGetHomePageImagesService _homePageImagesService:
این عضو برای دریافت تصاویر صفحه اصلی استفاده میشود.
IProductFacad _productFacad:
این عضو برای دریافت محصولات صفحه اصلی استفاده میشود.
سازنده HomeController
csharp
public HomeController(ILogger<HomeController> logger
, IGetSliderService getSliderService
, IGetHomePageImagesService homePageImagesService
, IProductFacad productFacad)
{
_logger = logger;
_getSliderService = getSliderService;
_homePageImagesService = homePageImagesService;
_productFacad = productFacad;
}
این سازنده فیلدهای خصوصی را مقداردهی میکند:
هدف: تزریق وابستگیها (Dependency Injection) و فراهم کردن استفاده از سرویسها و لاگگیری.
اکشن Index
csharp
public IActionResult Index()
{
HomePageViewModel homePage = new HomePageViewModel()
{
Sliders = _getSliderService.Execute().Data,
PageImages = _homePageImagesService.Execute().Data,
Camera = _productFacad.GetProductForSiteService.Execute(Ordering.theNewest
, null, 1, 6, 25).Data.Products,
};
return View(homePage);
}
این متد یک اکشن است که ویوی مربوط به صفحه اصلی را باز میکند:
ایجاد ViewModel صفحه اصلی: دادههای اسلایدرها، تصاویر صفحه اصلی و محصولات (دوربینها) را از سرویسهای مختلف دریافت میکند و در یک ViewModel قرار میدهد.
بازگرداندن ویو: ViewModel صفحه اصلی را به ویو ارسال میکند.
هدف: نمایش دادههای صفحه اصلی به کاربر.
اکشن Privacy
csharp
public IActionResult Privacy()
{
return View();
}
این متد یک اکشن است که ویوی مربوط به صفحه حریم خصوصی را باز میکند:
هدف: نمایش صفحه حریم خصوصی.
اکشن Error
csharp
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
این متد یک اکشن است که در صورت بروز خطا اجرا میشود:
عدم کشسازی پاسخ: استفاده از ResponseCache برای جلوگیری از کشسازی پاسخ.
ایجاد مدل خطا: ایجاد یک شیء ErrorViewModel با شناسه درخواست (RequestId).
بازگرداندن ویو: بازگرداندن ویو خطا همراه با مدل خطا.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
نتیجهگیری
این کنترلر به مدیریت صفحات اصلی سایت میپردازد. شامل اکشنهایی برای نمایش صفحه اصلی، صفحه حریم خصوصی و صفحه خطا میباشد. این کنترلر از سرویسهای مختلف برای دریافت دادههای مربوط به اسلایدرها، تصاویر صفحه اصلی و محصولات استفاده میکند و این دادهها را به ویو ارسال میکند تا به کاربر نمایش داده شوند.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این بخش از کد ویو Razor برای صفحه اصلی را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
۱. بخش اسلایدر (slider-box)
کد:
html
<div class="slider-box">
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
@for (int i = 1; i <= Model.Sliders.Count - 1; i++)
{
<li data-target="#carouselExampleIndicators" data-slide-to="@i" ></li>
}
</ol>
<div class="carousel-inner">
@foreach (var item in Model.Sliders)
{
if (_sliderCount == 1)
{
<div class="carousel-item active">
<a href="@item.Link">
<img src="~/@item.Src" class="d-block w-100" alt="...">
</a>
</div>
}
else
{
<div class="carousel-item">
<a href="@item.Link">
<img src="~/@item.Src" class="d-block w-100" alt="...">
</a>
</div>
}
_sliderCount++;
}
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="fa fa-angle-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="fa fa-angle-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
توضیح:
ساختار کلی اسلایدر: استفاده از کلاسهای carousel و carousel slide برای ایجاد یک اسلایدر با استفاده از Bootstrap.
carousel-indicators:
نمایش نقاط نمایانگر که نشاندهنده تعداد اسلایدها هستند.
لیست نقاط: استفاده از یک حلقه for برای ایجاد نقاط به ازای تعداد اسلایدها.
carousel-inner: شامل تمام اسلایدها.
@foreach: حلقهای برای ایجاد هر اسلاید.
بررسی اولین اسلاید: اگر اولین اسلاید است، کلاس active به آن اضافه میشود.
تصویر اسلاید: نمایش تصویر هر اسلاید با استفاده از مسیر Src و لینک مرتبط با آن.
۲. نمایش تصاویر تبلیغاتی
کد:
html
<div class="col-lg-3 col-md-4 col-xs-12 pl mt-1">
<div class="adplacement-container-column">
<a href="#" class="adplacement-item">
<div class="adplacement-sponsored-box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.L1)?.FirstOrDefault()?.Src ?? '' ">
</div>
</a>
<a href="#" class="adplacement-item">
<div class="adplacement-sponsored-box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.L2)?.FirstOrDefault()?.Src ?? ''">
</div>
</a>
</div>
</div>
توضیح:
نمایش تصاویر تبلیغاتی در مکانهای L1 و L2:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصاویری که محل قرارگیری آنها ImageLocation.L1 و ImageLocation.L2 باشد.
اولین تصویر مناسب: استفاده از FirstOrDefault برای انتخاب اولین تصویر که معیار را برآورده میکند.
مسیر تصویر: استفاده از خاصیت Src برای نمایش تصویر.
۳. بنر تصویر مرکز تمام صفحه
کد:
html
<div class="-container-column mt-4">
<a href="#" class="adplacement-item img-banner">
<div class="adplacement-sponsored-box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.R1)?.FirstOrDefault()?.Src ?? ''">
</div>
</a>
</div>
توضیح:
نمایش تصویر در مکان R1:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصویری که محل قرارگیری آن ImageLocation.R1 باشد.
اولین تصویر مناسب: استفاده از FirstOrDefault برای انتخاب اولین تصویر که معیار را برآورده میکند.
مسیر تصویر: استفاده از خاصیت Src برای نمایش تصویر.
پروژه 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 دریافت میشوند و به صورت داینامیک در صفحه نمایش داده میشوند.