در آموزش ویوهای روابط یک به چند در EF Core، نحوه نمایش دادههای یک به چند در View بررسی میشود. ابتدا با استفاده از ViewModel دادههای مرتبط را ترکیب کرده. و سپس در یک View در ASP.NET Core MVC نمایش خواهیم داد.
کنترلر PhoneController در ASP.NET Core 9، یک کنترلر استاندارد در معماری MVC است که عملیات ایجاد، نمایش و حذف شماره تلفنهای مرتبط با دانشجویان را مدیریت میکند. این کنترلر از قابلیت Dependency Injection برای ارتباط با سرویسهایی مانند PhoneService، StudentService و EnumService بهره میبرد و وظایفی مانند اعتبارسنجی دادهها و هدایت کاربران به صفحات مناسب را بر عهده دارد. این کنترلر نمونهای عالی برای درک مفاهیم MVC و ارتباط بین کنترلرها و سرویسها است.
کنترلر PhoneController در ASP.NET Core 9 مسئول مدیریت عملیات مربوط به شماره تلفنهای دانشجویان است. این کنترلر از الگوی MVC (Model-View-Controller) پیروی کرده و از تکنیکهای پیشرفتهای مانند Dependency Injection برای ارتباط با سرویسها استفاده میکند.
/// <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 });
}
}
در فیلم آموزشی در ویو Details مربوط به کنترلر Student. نمایش اتربیوت Display فراموش شده. منظور نمایش مقدار فارسی Enum ها میباشد. کافی است به جای استفاده از item.PhoneType از Html.DisplayFor(e=>item.PhoneType) استفاده کنید. مانند کد زیر.
@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>
}
ممنون از توضیحات کاملت، یچیزی رو بدون رودرواسی بگم تو اینترنت میتونم کد پیدا کنم ولی تا وقتی اموزش هات رو قبلش ندیده باشم برام خیلی مبهمه یه کپی و پیست میکنم کارم راه میافته ولی اینکه بدونم چرا استفاده میکنم برام مهمتره ،واقعا دارم از تهران ای تی استفاده میکنم،و واقعا به هر کی که بخواد برنامه نویسی یاد بگیره شما رو پیشنهاد میدم چون دارم حال میکنم با برنامه نویسی ،انشاا.. همیشه موفق و پر انرژی باشی.