پیاده سازی عملیات CRUD در asp.net mvc

در وبسایت های داینامیک که با پایگاه داده در ارتباط هستند نیاز به پیاده سازی عملیات CRUD می باشد. این عملیات مخفف عبارت های زیر هستند:

  • Create: ثبت اطلاعات.
  • Update: ویرایش اطلاعات
  • Delete: حذف اطلاعات

در ASP.NET MVC تقریبا در تمامی کنترلرها این عملیات پیاده سازی می شوند بنابراین در هر کنترلر می بایست چهار اکشن برای عملیات زیر ایجاد نماییم:

  • ثبت اطلاعات
  • نمایش اطلاعات
  • ویرایش اطلاعات
  • حذف اطلاعات

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

GET و POST

اکشن ها بطور معمول می توانند حالت GET یا POST باشند که پیشتر در مورد این نوع عملیات در بخش آموزش HTML توضیحاتی داده شد. حالت GET برای دریافت اطلاعات از سرور و نمایش به کاربر استفاده می شود و POST برای دریافت اطلاعات از کاربر و ارسال آن به سمت سرور که این امر(جمع آوری اطلاعات) توسط فرم ها انجام می شود.

برخی از اکشن ها مانند Create, Edit نیاز به پیاده سازی هر دو حالت دارند. برای مثال فرم ثبت اطلاعات را در نظر بگیرید که در حالت GET آن باید یک فرم خالی به کاربر نمایش داده شود و در حالت POST آن می بایست اطلاعات وارد شده توسط کاربر، در پایگاه داده ذخیره گردد. در صورتیکه هنگام تعریف اکشن، نوع عملیات آن تعیین نشود، بصورت پیشفرض از نوع GET در نظر می شود و اگر قصد داشته باشید حالت POST  اکشن را نیز مشخص نمایید می بایست از دستور [HttpPost] قبل از تعریف اکشن استفاده نمود. به این نوع تنظیمات که درون علامت های [ ] قرار می گیرند اصطلاحاً Attributes گفته می شود که برای توصیف فیلد مورد استفاده قرار میگیرند و در مقاله ای جداگانه به تفصیل در مورد آنها توضیح داده خواهد شد. بنابراین حالت های GET و POST اکشنی مانند Create به شکل زیر خواهد بود.

public ActionResult Create()
{
    return View();
}

[HttpPost]
public ActionResult Create(parameter)
{
    return View();
}

HTML Helpers

با استفاده از کلاس HTML Helper می توان عناصر HTML را با استفاده از object های کلاس model در نمای Razor ایجاد نمود. منظور از model همان نوع اطلاعاتی می باشد که به View ارسال می گردد و در درس های قبلی توضیح داده شد که در ابتدای صفحه بصورت زیر تعریف می گردد.

@model Store.Models.Category

HTML Helper یک فیلد از model مورد نظر را به یک عنصر HTML متصل می کند. بدین ترتیب عنصر مورد نظر می تواند محتوای فیلد را نمایش داده یا فیلد مورد نظر را مقدار دهی کند. تمام Helper ها با پیشوند Helper تعیین شده و لیست آنها به شرح زیر می باشند:

  • Html.LabelFor: نمایش متن.
  • Html.ActionLink: ایجاد لینک.
  • Html.TextBoxFor: ایجاد TextBox.
  • Html.EditorFor: ایجاد TextBox متناسب با نوع داده فیلد متصل شده.
  • Html.HiddenFor: ایجاد فیلدهای غیر قابل نمایش در صفحات وب جهت ذخیره سازی اطلاعات مهم.
  • Html.PasswordFor: ایجاد فیلدهای امنیتی مانند رمز عبور که محتوای آن می بایست غیر قابل نمایش باشد.
  • Html.CheckBoxFor: ایجاد checkbox.
  • Html.RadioButtonFor: ایجاد دکمه های رادیویی.
  • Html.DropDownListFor: ایجاد لیست کشویی.
  • Html.DisplayFor: نمایش متن.
  • Html.TextAreaFor: ایجاد textarea.

در مقاله بعدی با نحوه استفاده از Helperها جهت ساخت فرم های مختلف آشنا خواهید شد.