ویوهای داینامیک برای روابط یک به چند در EF Core

تهران آی تی / برنامــه نویــسـی / ویوهای داینامیک برای روابط یک به چند در EF Core

ویوهای داینامیک برای روابط یک به چند در EF Core

در آموزش ویوهای روابط یک به چند در EF Core، نحوه نمایش داده‌های یک به چند در View بررسی می‌شود. ابتدا با استفاده از ViewModel داده‌های مرتبط را ترکیب کرده. و سپس در یک View در ASP.NET Core MVC نمایش خواهیم داد.

کنترلر PhoneController در ASP.NET Core 9، یک کنترلر استاندارد در معماری MVC است که عملیات ایجاد، نمایش و حذف شماره‌ تلفن‌های مرتبط با دانشجویان را مدیریت می‌کند. این کنترلر از قابلیت Dependency Injection برای ارتباط با سرویس‌هایی مانند PhoneService، StudentService و EnumService بهره می‌برد و وظایفی مانند اعتبارسنجی داده‌ها و هدایت کاربران به صفحات مناسب را بر عهده دارد. این کنترلر نمونه‌ای عالی برای درک مفاهیم MVC و ارتباط بین کنترلرها و سرویس‌ها است.

کنترلر – Controller تلفن Phone

کنترلر PhoneController در ASP.NET Core 9 مسئول مدیریت عملیات مربوط به شماره تلفن‌های دانشجویان است. این کنترلر از الگوی MVC (Model-View-Controller) پیروی کرده و از تکنیک‌های پیشرفته‌ای مانند Dependency Injection برای ارتباط با سرویس‌ها استفاده می‌کند.

وظایف اصلی PhoneController

  • نمایش شماره تلفن‌ها (Index) : این اکشن شماره تلفن‌های مربوط به یک دانشجو را بازیابی کرده و به View مربوطه ارسال می‌کند.
  • ایجاد شماره تلفن جدید (Create) : اکشن GET بررسی می‌کند. آیا StudentId ارسال شده است. در صورت عدم ارسال، خطای NotFound برمی‌گرداند. اکشن POST آن فرم ارسال‌شده را بررسی کرده و در صورت معتبر بودن اطلاعات، شماره تلفن را ذخیره و کاربر را به لیست شماره‌ها هدایت می‌کند.
  • حذف شماره تلفن (Delete) : اکشن GET شماره تلفن را بازیابی می‌کند. اکشن POST آن عملیات حذف را نهایی می‌کند و کاربر را به صفحه مربوطه برمی‌گرداند.

اجزای استفاده شده

  • سرویس IPhoneService: مدیریت داده‌های شماره تلفن.
  • سرویس IStudentService: دسترسی به داده‌های دانشجویان.
  • سرویس IEnumService: ارائه مقادیر Enum مانند نوع شماره تلفن.

/// <summary>
/// کنترلر برای مدیریت عملیات مربوط به تلفن‌ها
/// </summary>
public class PhoneController : Controller
{
private readonly IPhoneService _phoneService;
private readonly IStudentService _studentService;
private readonly IEnumService _enumService;
/// <summary>
/// سازنده کنترلر تلفن
/// </summary>
/// <param name="phoneService">سرویس تلفن</param>
/// <param name="studentService">سرویس دانشجو</param>
/// <param name="enumService">سرویس مقادیر شمارشی</param>
public PhoneController(
IPhoneService phoneService,
IStudentService studentService,
IEnumService enumService)
{
_phoneService = phoneService;
_studentService = studentService;
_enumService = enumService;
}
/// <summary>
/// نمایش لیست تلفن‌های دانشجو
/// </summary>
/// <param name="StudentId">شناسه دانشجو</param>
/// <returns>نمایش لیست تلفن‌ها</returns>
public async Task<IActionResult> Index(int StudentId)
{
ViewBag.StudentId = StudentId;
return View(await _phoneService.GetPhoneByStudentIdAsync(StudentId));
}
/// <summary>
/// نمایش فرم ایجاد تلفن جدید
/// </summary>
/// <param name="StudentId">شناسه دانشجو</param>
/// <returns>نمایش فرم ایجاد تلفن</returns>
public async Task<IActionResult> Create(int? StudentId)
{
if (StudentId == null)
return NotFound();
await _studentService.GetStudentByIdAsync(StudentId.Value);
ViewBag.PhoneType = _enumService.GetEnumList<PhoneType>();
return View();
}
/// <summary>
/// ایجاد تلفن جدید
/// </summary>
/// <param name="phone">مدل نمایشی تلفن</param>
/// <returns>نتیجه عملیات ایجاد تلفن</returns>
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,PhoneType,PhoneNumber,StudentId")] PhoneViewModel phone)
{
if (ModelState.IsValid)
{
await _phoneService.CreatePhoneAsync(phone);
return RedirectToAction(nameof(Index), new { StudentId = phone.StudentId });
}
ViewBag.PhoneType = _enumService.GetEnumList<PhoneType>();
return View(phone);
}
/// <summary>
/// نمایش فرم حذف تلفن
/// </summary>
/// <param name="id">شناسه تلفن</param>
/// <returns>نمایش فرم حذف تلفن</returns>
public async Task<IActionResult> Delete(int? id)
{
if (id == null) return NotFound();
return View(await _phoneService.GetPhoneByIdAsync(id.Value));
}
/// <summary>
/// حذف تلفن
/// </summary>
/// <param name="id">شناسه تلفن</param>
/// <returns>نتیجه عملیات حذف تلفن</returns>
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var StudentId = await _phoneService.DeletePhoneAsync(id);
return RedirectToAction(nameof(Index), new { StudentId = StudentId });
}
}

نکته مهم در نمایش Enum ها

در فیلم آموزشی در ویو Details مربوط به کنترلر Student. نمایش اتربیوت Display فراموش شده. منظور نمایش مقدار فارسی Enum ها میباشد. کافی است به جای استفاده از item.PhoneType از Html.DisplayFor(e=>item.PhoneType) استفاده کنید. مانند کد زیر.

  • استفاده از item.PhoneType
ویوهای داینامیک برای روابط یک به چند در EF Core

ویو داینامیک برای روابط One To Many در EF Core

  • استفاده از Html.DisplayFor(e=>item.PhoneType)
ویوهای داینامیک برای روابط یک به چند در EF Core

ویوه داینامیک برای روابط One To Many در EF Core

@foreach (var item in Model.Phones)
{
<dt class="col-sm-2">
@Html.DisplayFor(e=>item.PhoneType)
</dt>
<dd class="col-sm-10">
@item.PhoneNumber
</dd>
}

جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد