تصور کنید در حال کار روی یک پروژه واقعی هستید. به شما وظیفه داده شده که فرمی برای ویرایش اطلاعات کاربران ایجاد کنید. اما باید مراقب باشید که فقط فیلدهای مجاز تغییر کنند و دادههای حساس مثل نقش کاربر یا وضعیت حساب او تغییر نکنند. اینجاست که ViewModel به کمک شما میآید. ViewModel به شما این امکان را میدهد که دادهها را دقیقاً همانطور که نیاز دارید به View ارسال کنید و از تغییرات ناخواسته جلوگیری کنید. در ادامه با ویرایش حرفهای رکورد با ViewModel در EF Core آشنا میشویم.
برای ویرایش حرفهای رکورد با ViewModel ابتدا دادهها را از دیتابیس بارگذاری کرده. و آنها را به ViewModel تبدیل میکنیم. و بعد به سمت ویو ارسال میکنیم.
public async Task<IActionResult> Edit(int? Id)
{
if (Id == null)
{
return NotFound();
}
var DeveloperM = await _context.developers.FindAsync(Id);
if (DeveloperM == null)
{
return NotFound();
}
var DeveloperVM = new EditDeveloperViewModel()
{
Id = DeveloperM.Id,
Email = DeveloperM.Email,
Phone = DeveloperM.Phone,
};
return View(DeveloperVM);
}
زمانی که فرم ارسال میشود. دادههای ViewModel را دریافت کرده. و در دیتابیس ذخیره میکنیم.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int Id, [Bind("Id,Email,Phone")] EditDeveloperViewModel DeveloperVM)
{
if (Id != DeveloperVM.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
var DeveloperM = await _context.developers.FindAsync(Id);
if (DeveloperM == null)
{
return NotFound();
}
DeveloperM.Email = DeveloperVM.Email;
DeveloperM.Phone = DeveloperVM.Phone;
_context.developers.Update(DeveloperM);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
catch (DbUpdateConcurrencyException)
{
if (!DeveloperExists(DeveloperVM.Id))
{
return NotFound();
}
else
{
throw;
}
}
}
return View(DeveloperVM);
}
private bool DeveloperExists(int Id)
{
return _context.developers.Any(a => a.Id == Id);
}
استفاده از ViewModel در EF Core 9 یک روش حرفهای و امن برای مدیریت دادهها و عملیات CRUD مانند Edit است. این روش به شما کمک میکند کدی خوانا، ساختاریافته و امنتر بنویسید که در پروژههای واقعی کاربرد بسیاری دارد. در ادامه آموزش، به بررسی دیگر عملیاتها با ViewModel میپردازیم. همراه ما باشید!
با سلام،
من با ویو مدل از چند تا جدول اطلاعات رو دریافت می کنم و توی فرم میزارم ولی وقتی می خوام ویرایش کنم اطلاعات رو به ویو مدل بر نمی گردونه و خالی ارسال میکنه.