در کنترل متد ما تبدیل به اکشن شود حتما سطح دسترسی public استفاده کنیم در معماری mvc وضیفه ui بر عهده View می باشد پس اکشن ها باید بتواند یک View را به خروجی پاس یا برگشت دهند برای اینکه یک بتوانیم اکشن یک View را برای result کاربر ارسال کنیم از اینترفیس IActionResult برای نوع خروجی اکشن استفاده کنیم و return View(); انجام دهیم اگر در داخل پرانتز خالی بگزارم و نام View پاس ندم mvc میرود در داخل پوشه Views و پوشه Blog و در داخل پوشه Blog به دنبال فایلی می گرده با نام Get چرا نام Get چون نام اکشن هست نام اکشن هر چیزی باشد باید View برگشت می دهم دقیقا با همان نام باشد اگر نام اکشن و View یکی نباشد باید در داخل متد Views در داخل پرانتز نام Views را بنویسید اگر View شما در پوشه کنترل نبود آدرس اون را بنویسد برای ساخت View روی اکشن کلیک راست کنید Add View را بزنید و Razor View را بزنید و پنجره دوم نام را مشخص کنید که بهتره نام اکشن باقی بماند و add را می زنیم تا فایل View ساخته بشود
یک پوشه Blog ایجاد کرد و در داخل پوشه Blog یک فایل Get ایجاد کرد در داخل فایل Get فایل های html را بنویسیم و برنامه را اجرا کنیم و به کنترل Blog و اکشن Get یک درخواست ارسال کنیم و خروجی View را باهم ببینیم
Attribute [NonAction]
در Asp.Net Core MVC برای مشخص کردن متدهایی استفاده میشود که نباید به عنوان اکشن در کنترلر شناخته شوند. این کاربرد دارد زمانی که بخواهید متدی را در کنترلر داشته باشید که به عنوان اکشن عمومی برای درخواستهای HTTP موجود نباشد، اما همچنان در داخل کنترلر استفاده شود.
برای استفاده از [NonAction]، به سادگی آن را در بالای متد مورد نظر قرار دهید:
using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
[NonAction]
public void HelperMethod()
{
// منطق کمکی که نمیخواهید به عنوان اکشن عمومی باشد
}
public IActionResult Index()
{
// استفاده از متد HelperMethod درون یک اکشن
HelperMethod();
return View();
}
}
در این مثال، متد HelperMethod با Attribute [NonAction] علامتگذاری شده است، بنابراین به عنوان یک اکشن عمومی در دسترس نخواهد بود اما میتواند درون اکشنهای دیگر استفاده شود.
و Action Selectors در Asp.Net Core MVC، Attributeهایی هستند که تعیین میکنند یک اکشن کنترلر چگونه به درخواستهای HTTP پاسخ دهد. سه Attribute پرکاربرد در این دسته عبارتند از:
HttpGet:
برای درخواستهای GET استفاده میشود. مثلاً:
[HttpGet]
public IActionResult Index()
{
return View();
}
HttpPost:
برای درخواستهای POST استفاده میشود. مثلاً:
[HttpPost]
public IActionResult Create(Item item)
{
// منطق ایجاد آیتم جدید
return RedirectToAction("Index");
}
HttpPut:
برای درخواستهای PUT استفاده میشود. مثلاً:
[HttpPut]
public IActionResult Update(int id, Item item)
{
// منطق بهروز رسانی آیتم
return RedirectToAction("Index");
}
این Action Selectorها مشخص میکنند که هر اکشن کنترلر چگونه به درخواستهای مختلف پاسخ دهد، بنابراین میتوانید درخواستها را به طور دقیق مدیریت کنید و منطق مناسب برای هر نوع درخواست اعمال کنید.
برای نمایش خورجی از برنامه Postman کمک بگیرید
یک نرمافزار متنباز برای تست و توسعه APIها است
این نرمافزار به شما امکان میدهد تا درخواستهای HTTP را ارسال کنید، پاسخها را بررسی کنید و APIها را به راحتی اشکالیابی کنید
همچنین ابزارهایی برای طراحی، تست، مستندات و موکینگ APIها فراهم میکند
میتواند به صورت نرمافزار دسکتاپ یا از طریق وب استفاده شود
برای شروع، میتوانید آن را از وبسایت Postman دانلود کنید و نصب کنید
https://www.postman.com/downloads/
Attribute [ActionName]
به شما این امکان رو میده که نام یک اکشن رو تغییر بدید بدون اینکه نام خود متد تغییر کنه. این attribute زمانی مفیده که میخواهید یک متد رو با نامی متفاوت نسبت به نام اصلی اون متد در URL یا درخواست HTTP نمایش بدید.
مثال:
using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
// متدی با نام "Index" داریم اما با ActionName تغییر دادیم به "Home"
[ActionName("Home")]
public IActionResult Index()
{
return View();
}
}
در این مثال، متد Index با استفاده از Attribute ActionName به عنوان "Home" شناخته میشه. بنابراین، وقتی یک درخواست HTTP به HomeController با اکشن "Home" ارسال بشه، این متد اجرا میشه
اگر نام view و نام اکشنی که با Attribute ActionName تغییر دادهاید یکسان نباشند، ممکن است به خطای 404 برخورد کنید چون فریمورک MVC به دنبال view با نام جدید میگردد. برای حل این مشکل، میتوانید از نام جدید در مسیر ویو داخل پرانتز قرار دهید
مثال:
using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
[ActionName("Home")]
public IActionResult Index()
{
return View("Index"); // یا نام view مورد نظر
}
}
در این مثال، اگر نام view همان "Index" باشد، به طور صریح آن را در متد اکشن مشخص کردهایم.
در Asp.Net Core MVC، مدلها (Models) بخش مهمی از معماری MVC هستند که برای تعریف و مدیریت دادههای اپلیکیشن استفاده میشوند. مدلها مسئول ارتباط با پایگاه داده، اعتبارسنجی دادهها و منطق کسبوکار هستند.
مدلها معمولاً به صورت کلاسهای C# تعریف میشوند و میتوانند شامل خصوصیات و متدهایی باشند که دادهها را مدیریت میکنند.
در Asp.Net Core MVC، دو نوع مدل مختلف معمولاً استفاده میشود: مدلهای Entity و مدلهای Business (یا Domain).
مدلهای Entity:
این مدلها برای نمایش اشیاء پایگاه داده استفاده میشوند.
معمولاً توسط Entity Framework ایجاد و مدیریت میشوند.
به عنوان مثال، یک مدل Product که خصوصیات Id، Name و Price را دارد و مستقیماً با جدول پایگاه داده متناظر است.
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
در این مثال، مدل Product شامل سه خصوصیت است: Id، Name و Price. میتوانید از این مدلها در کنترلرها و ویوها برای نمایش، ویرایش و ذخیره دادهها استفاده کنید.
مدلهای Business (یا Domain):
این مدلها برای مدیریت منطق کسبوکار و نمایش دادههایی که مستقیماً به پایگاه داده مربوط نیستند، استفاده میشوند.
معمولاً شامل منطقهای پیچیدهتر و متدهایی برای اعمال قوانین کسبوکار هستند.
به عنوان مثال، یک مدل Order که شامل روشهایی برای محاسبه کل قیمت سفارش و مدیریت اقلام آن است.
public class Order
{
public int OrderId { get; set; }
public List<Product> Products { get; set; }
public decimal CalculateTotal()
{
return Products.Sum(p => p.Price);
}
}
مدلهای Entity بیشتر برای ارتباط با پایگاه داده و مدلهای Business برای اعمال منطق و قوانین کسبوکار استفاده میشوند. این تمایز کمک میکند تا کدهایتان مرتب و مدیریتپذیرتر باشند.