در آموزش ویوهای داینامیک برای روابط چند به چند در EF Core، نحوه نمایش دادههای چند به چند در Viewهای ASP.NET Core بررسی خواهد شد. ویو های ایجاد شده شامل: ویو و کنترلر مربوط به درس و همچنین انتخاب واحد دانشجویان میشود.
این دو اکشن کنترلر (Action Method) مربوط به کنترل اضافه کردن و حذف یک درس برای یک دانشجو در ASP.NET Core 9 هستند و از طریق فرم POST کار میکنند. در ادامه به صورت کامل و مرحلهبهمرحله کدها را توضیح میدهم:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> AddCourse(int StudentId, int CourseId)
{
await _studentCourseService.AddStudentCourse(StudentId, CourseId);
return RedirectToAction(nameof(Details), new { id = StudentId });
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> RemoveCourse(int StudentId, int CourseId)
{
await _studentCourseService.RemoveStudentCourse(StudentId, CourseId);
return RedirectToAction(nameof(Details), new { id = StudentId });
}
این دو متد با هم یک سیستم ساده برای مدیریت دروس دانشجو فراهم میکنند. منطق اصلی مربوط به عملیات اضافه یا حذف در سرویس StudentCourseService پیادهسازی شده، که این باعث رعایت اصل تفکیک مسئولیتها (SRP) در معماری نرمافزار میشود.
مشابه کد قبلی هستند اما این بار تمرکز روی اضافه یا حذف دانشجو از یک درس هست (برعکس حالت قبلی که اضافه/حذف درس برای دانشجو بود). این تفاوت کوچکی در منطق و جهت نمایش در رابط کاربری ایجاد میکند.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> AddStudent(int StudentId, int CourseId)
{
await _studentCourseService.AddStudentCourse(StudentId, CourseId);
return RedirectToAction(nameof(Details), new { id = CourseId });
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> RemoveStudent(int StudentId, int CourseId)
{
await _studentCourseService.RemoveStudentCourse(StudentId, CourseId);
return RedirectToAction(nameof(Details), new { id = CourseId });
}
این متد دقیقاً مشابه متد قبلی است، ولی با هدف حذف یک دانشجو از یک درس خاص. از لحاظ عملکرد، ارتباط بین دانشجو و درس را حذف میکند (مثلاً ردیف مربوطه در جدول میانی بین دانشجویان و دروس را حذف میکند). پس از حذف، کاربر به صفحه جزئیات درس هدایت میشود تا بتواند لیست جدید دانشجویان آن درس را ببیند.