خانه / برنامه نویسی / آموزش MVC برای مبتدیان-Delete در MVC با استفاده از درخواست Post

آموزش MVC برای مبتدیان-Delete در MVC با استفاده از درخواست Post

حذف رکورد در MVC با استفاده از Post یا Delete در MVC با استفاده از Post

اگر به خاطر داشته باشید در قسمت قبل به روز رسانی یا ویرایش یک رکورد در بانک اطلاعاتی را بررسی کردیم، در این قسمت میخواهیم چگونگی حذف یک رکورد از بانک اطلاعاتی را با استفاده از درخواست Post بررسی کنیم.
کاری که در این قسمت قرار است انجام شود ساختن دکمه و متد حذف در صفحه است که با کلیک روی دکمه حذف ابتدا یک پیام به کاربر نمایش داده میشود و بعد از تایید رکورد از بانک اطلاعاتی حذف میشود.
در ابتدا اگر روی لینک Delete کلیک کنیم اتفاق خاصی رخ نمیدهد و تنها یک پیام خطا دریافت میکنیم، این پیغام بخاطر نبود ویو و اکشن Delete است که با استفاده از Get درخواست شده است ولی برای حذف رکورد استفاده از درخواست Get کار اشتباه و خطرناکی است (در دوره های آینده بررسی می کنیم)، به همین دلیل لینک Delete را با دکمه Delete عوض میکنیم که بعد از کلیک روی این دکمه از کاربر سوالی مبنی بر اطمینان از حدف رکورد از کاربر پرسیده میشود و بعد از تایید فرم به سرور ارسال (Post) می شود و عمل حذف انجام میشود.
ابتدا برای Delete در MVC باید StoredProcedure مربوط به حذف را درست کنیم، پس اسکریپت زیر را در SQL Server اجرا کنید :

 

Create procedure spDeleteEmployee
@Id int
as
Begin
	Delete from tblEmployee
	where EmployeeId = @Id
End

تا اینجا که کاری تکراری بود و در قسمت های قبل هم انجام دادیم تنها تفاوت در این بود که اینجا SP عمل حذف را ساختیم.
حالا اجازه بدید متد حذف را به کلاس EmployeeBusinessLayer اضافه کنیم تا بتوانیم عمل Delete در MVC را انجام دهیم، پس این کلاس را باز کرده و متد زیر را به آن اضافه کنید :

public void DeleteEmployee(int id)
        {
            string connectionstring = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

            using (var con = new SqlConnection(connectionstring))
            {
                var cmd = new SqlCommand("spDeleteEmployee", con);
                cmd.CommandType = CommandType.StoredProcedure;

                var paramId = new SqlParameter();
                paramId.ParameterName = "@Id";
                paramId.Value = id;
                cmd.Parameters.Add(paramId);

                con.Open();
                cmd.ExecuteNonQuery();
            }
        }

توضیح این کدها هم در قسمت های قبل داده شده است، تنها نام SP متفاوت است.
حالا کلاس یا کنترلر EmployeeController را باز کنید و اکشن متد حذف را به صورت زیر اضافه کنید:

[HttpPost]
        public ActionResult Delete(int id)
        {
            var employeeBusinessLayer = new EmployeeBusinessLayer();
            employeeBusinessLayer.DeleteEmployee(id);
            return RedirectToAction("Index");
        }

همانطور که می بینید از درخواست Post استفاده کردیم پس شما آدرس localhost/Employee/Delete را نمیتوانید مشاهده کنید.
قدم بعدی جایگزینی دکمه حذف با لینک Delete است، پس ویو Index را باز کرده و به جای کدهای لینک Delete کدهای زیر را قرار دهید:

@foreach (var item in Model) {
    using (Html.BeginForm("Delete", "Employee", new {id = item.EmployeeId}))
     {
         <tr>
             <td>
                 @Html.DisplayFor(modelItem => item.Name)
             </td>
             <td>
                 @Html.DisplayFor(modelItem => item.Gender)
             </td>
             <td>
                 @Html.DisplayFor(modelItem => item.City)
             </td>
             <td>
                 @Html.DisplayFor(modelItem => item.DepartmentId)
             </td>
             <td>
                 @Html.ActionLink("Edit", "Edit", new {id = item.EmployeeId}) |
            
                 <input type="submit" value="حذف"/>
            
             </td>
         </tr>
     }
}

دقت کنید بنده تمام کدهای foreach را برای شما قرار دادم، کدهای بالا را با کدهای موجود در برنامه مقایسه کنید، عبارت using و helper ای به
نام BeginForm درست بعد از foreach اضافه کرده ام و کدهای لینک Delete را با دکمه تعویض کردم.
در این حالت وقتی برنامه را اجرا کرده و روی دکمه حدف کلیک کنید رکورد مورد نظر حذف میشود اما از شما سوالی مبنی بر اطمینان از حذف پرسیده
نمیشود.
برای اینکار تنها کد مربوط به دکمه را به صورت زیر تغییر میدهیم :

<input type="submit" value="حذف" onclick="return confirm('آیا اطمینان دارید؟');"/>

حالا برنامه را اجرا کنید و روی دکمه حذف کلیک کنید، بله به همین راحتی انجام شد!
اینجا به پایان این دوره (آموزش ASP.NET MVC برای مبتدیان) رسیدیم، امیدوارم استفاده کرده باشید.
انشالله دوره متوسط و پیشرفته به صورت تصویری برای شما آماده خواهد شد ولی نه به زودی!

مطلب پیشنهادی

تنظیمات در زامارین استادیو

آموزش زامارین قسمت دوم فیلم مقدمه ای بر زامارین

در پست مقدمه ای بر زامارین فلم آموزشی که وب سایت زامارین پرشین آماده کرده است را ...

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *