
ویرایش حرفهای رکورد با ViewModel در EF Core
تصور کنید در حال کار روی یک پروژه واقعی هستید. به شما وظیفه داده شده که فرمی برای ویرایش اطلاعات کاربران ایجاد کنید. اما باید مراقب باشید که فقط فیلدهای مجاز تغییر کنند و دادههای حساس مثل نقش کاربر یا وضعیت حساب او تغییر نکنند. اینجاست که ViewModel به کمک شما میآید. ViewModel به شما این امکان را میدهد که دادهها را دقیقاً همانطور که نیاز دارید به View ارسال کنید و از تغییرات ناخواسته جلوگیری کنید. در ادامه با ویرایش حرفهای رکورد با ViewModel در EF Core آشنا میشویم.
بارگذاری دادهها در ViewModel
برای ویرایش حرفهای رکورد با 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 در استفاده کنیم؟
- امنیت دادهها: تنها دادههایی که در ViewModel تعریف شدهاند، از سمت کاربر ارسال میشوند.
- سادگی و خوانایی کد: ViewModel کدی سادهتر و قابلفهمتر ارائه میدهد.
- جداسازی منطق دادهها: ViewModel منطق دادههای دیتابیس را از View جدا میکند.
استفاده از ViewModel در EF Core 9 یک روش حرفهای و امن برای مدیریت دادهها و عملیات CRUD مانند Edit است. این روش به شما کمک میکند کدی خوانا، ساختاریافته و امنتر بنویسید که در پروژههای واقعی کاربرد بسیاری دارد. در ادامه آموزش، به بررسی دیگر عملیاتها با ViewModel میپردازیم. همراه ما باشید!






























با سلام،
من با ویو مدل از چند تا جدول اطلاعات رو دریافت می کنم و توی فرم میزارم ولی وقتی می خوام ویرایش کنم اطلاعات رو به ویو مدل بر نمی گردونه و خالی ارسال میکنه.