خانه / برنامه نویسی / آموزش ASP.NET MVC برای مبتدیان-جلسه یازده-FormCollection در MVC
امدادگرافیک

آموزش ASP.NET MVC برای مبتدیان-جلسه یازده-FormCollection در MVC

در این جلسه در رابطه با FormCollection در MVC صحبت خواهیم کرد لطفا قبل از مطالعه این قسمت به مطالب جلسه قبل نگاهی بندازید.

حتما ابتدا جلسات قبل رو مطالعه کنید تا با کلمات و اصطلاحات آشنا باشید.

آموزش ASP.NET MVC برای مبتدیان – مقدمه

آموزش ASP.NET MVC برای مبتدیان-جلسه اول

آموزش ASP.NET MVC برای مبتدیان-جلسه دوم

آموزش ASP.NET MVC برای مبتدیان-جلسه سوم

آموزش ASP.NET MVC برای مبتدیان-جلسه چهارم

آموزش ASP.NET MVC برای مبتدیان-جلسه پنجم

آموزش ASP.NET MVC برای مبتدیان-جلسه ششم

آموزش ASP.NET MVC برای مبتدیان-جلسه هفتم

آموزش ASP.NET MVC برای مبتدیان-جلسه هشتم

آموزش ASP.NET MVC برای مبتدیان-جلسه نهم

آموزش ASP.NET MVC برای مبتدیان-جلسه دهم

اگر به خاطر داشته باشید در قسمت قبل ویو ای برای ثبت اطلاعاتی کارمند درست کردیم و در رابطه با Get یا Post بودن اکشن متد توضیحاتی دادم، در این قسمت اکشن متد Create رو که با خاصیت (Attribute) HttpPost مشخص شده باشه رو میسازیم تا اطلاعات کارمند رو ثبت کنه.

خوب اول SP یا Stored Procedure رو درست میکنیم (این جلسه از Stored Procedure استفاده میکنم)، اسکریپت ساخت SP رو میبینید :

create procedure spAddEmployee
@Name nvarchar(50),
@Gender nvarchar(50),
@City nvarchar(50),
@DepartmentId int
as
Begin
Insert into tblEmployee (Name,Gender,City,DepartmentId)
values (@Name, @Gender, @City, @DepartmentId)
End

ویژوال استادیو رو باز کنید و پروژه رو لود کنید، کلاس EmployeeBusinessLayer رو از پروژه BusinessLayer باز کنید، دقت کنید تا اینجا تنها پراپرتی Employees رو درست کردیم که لیستی از کارمندان رو برای ما برمیگردونه، نیاز به متودی هم داریم تا اطلاعات رو ثبت کنه یا وارد بانک اطلاعاتی کنه. پس متد مورد نظر رو با اسم AddEmployee به صورت زیر اضافه میکنیم :

public void AddEmployee(Employee employee)
        {
            string connectionstring = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
                
            using (var con = new SqlConnection(connectionstring))
            {
                var cmd = new SqlCommand("spAddEmployee", con);
                cmd.CommandType = CommandType.StoredProcedure;
                
                var paramName = new SqlParameter();
                paramName.ParameterName = "@Name";
                paramName.Value = employee.Name;
                cmd.Parameters.Add(paramName);

                var paramGender = new SqlParameter();
                paramGender.ParameterName = "@Gender";
                paramGender.Value = employee.Gender;
                cmd.Parameters.Add(paramGender);

                var paramCity = new SqlParameter();
                paramCity.ParameterName = "@City";
                paramCity.Value = employee.City;
                cmd.Parameters.Add(paramCity);

                var paramDepartmentId = new SqlParameter();
                paramDepartmentId.ParameterName = "@DepartmentId";
                paramDepartmentId.Value = employee.DepartmentId;
                cmd.Parameters.Add(paramDepartmentId);
                
                con.Open();
                cmd.ExecuteNonQuery();
            }
        }

 

همونطور که میبینید رشته اتصال رو از فایل Web.Config خوندیم و با استفاده از این رشته اتصال شئ اتصال رو ساختیم، دستور SQL رو آماده کردیم و پارامترها رو معرفی کردیم، شئ اتصال رو باز کردیم و در آخرهم درخواست رو اجرا کردیم.

مورد بعدی که نیاز داریم اکشن متد Create ای هست که با خاصیت HttpPost مشخص شده باشه تا وقتی فرم رو پست کردیم (روی دکمه Create کلیک کردیم) صفحه ی 404 نمایش داده نشه و کارهای لازم (گرفتن اطلاعات از فرم و ارسال اونها به سرور و ثبت در بانک اطلاعاتی) رو انجام بده، پس کنترلر Employee رو باز کنید و اکشن متد Create رو به صورت زیر اضافه کنید :

[HttpPost]
        public ActionResult Create(FormCollection formcollection)
        {

            return View();
        }

 

خاصیت HttpPost رو ابتدای اکشن متد قرار دادیم و اکشن متد Create رو نوشتیم، میبینید که این اکشن متد یک پارامتر داره از نوع FormCollection، وقتی فرم رو پر میکنیم و روی دکمه Create کلیک میکنیم اطلاعات فرم به اکشن متد Create ای که ساختیم ارسال میشود این اطلاعات همین FormCollection هستند. برای اینکه با FormCollection در MVC بیشتر آشنا بشیم اجازه بدید اکشن متد رو به صورت زیر تغییر بدیم :

[HttpPost]
        public ActionResult Create(FormCollection formcollection)
        {
            foreach (var key in formcollection.AllKeys)
            {
                Response.Write("Key = " + key + "  ");
                Response.Write("Value = " + formcollection[key]);
                Response.Write("<br/>");
            }
            return View();
        }

 

برای روشن تر شدن FormCollection در MVC میبینید که در یک حلقه تمام key های پارامتر FormCollection رو نمایش دادیم، پروژه رو اجرا کنید و فرم رو پر کنید و روی دکمه Create کلیک کنید، مشاهده می کنید که اطلاعات FormCollection برای ما نمایش داده می شود.نام کلید و مقدار.

پس تمام کاری که برای ثبت اطلاعات در بانک اطلاعاتی باید انجام داده شود، گرفتن اطلاعات از FormCollection در MVC است و پاس دادن اونها به متد AddEmployee که ابتدای کار در کلاس EmployeeBusinessLayer ساختیم است.

خوب حالا اکشن متد Create رو به صورت زیر تغییر میدیم :

[HttpPost]
        public ActionResult Create(FormCollection formcollection)
        {
            var employee = new Employee();
            employee.Name = formcollection["Name"];
            employee.Gender = formcollection["Gender"];
            employee.City = formcollection["City"];
            employee.DepartmentId = Convert.ToInt32(formcollection["DepartmentId"]);
            var ebl = new EmployeeBusinessLayer();
            ebl.AddEmployee(employee);
            return RedirectToAction("Index");
        }

 

به کدها دقت کنید، یک نمونه از Employee درست کردیم، پراپرتی های اون رو مقدار دهی کردیم، یک نمونه از EmployeeBusinessLayer درست کردیم و از متد AddEmployee که که در کلاس EmployeeBusinessLayer ساختیم استفاده کردیم و نمونه employee رو پاس دادیم به متد، پراپرتی های Employee رو هم از کلیدهای FormCollection گرفتیم در آخر هم از RedirectToAction استفاده کردیم تا کاربر به صفحه Index هدایت شده و لیست کاربران رو مشاهده کنه. به همین سادگی!

پروژه رو اجرا کنید و آدرس http://localhost/MVCDemo/Employee/Index رو باز کنید، روی لینک Create new کلیک کنید و فرم رو پر کرده و روی دکمه Create کلیک کنید.

این جلسه در رابطه با FormCollection در MVC صحبت کردیم و در ادامه بحث جلسه قبل اطلاعات ویو مورد نظر رو در بانک اطلاعاتی ثبت کردیم.

در آینده خواهیم آموخت به جای FormCollection در MVC از Model Binder استفاده کنیم تا در نوشتن کدها صرفه جویی کنیم.

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

کمپایلر زبان های برنامه نویسی

دانلود کمپایلر زبان های برنامه نویسی

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

یک دیدگاه

  1. بازتاب ها: آموزش MVC برای مبتدیان-استفاده از ModelBinder بجای FormCollection

پاسخ دهید

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

برای مشاهده محصولات به قسمت فروشگاه سایت مراجعه نمایید. رد کردن