ثبت CheckBoxListFor و دریافت مقادیر انتخاب شده در کنترلر MVC
دوشنبه 18 آبان 1394در این مقاله می آموزیم که چگونه می توان CheckBoxListFor در HTML را ثبت کرد و مقادیر انتخاب شده آن را در کنترلر ASP.NET MVC دریافت نمود. ما این کار را بدون استفاده از پایگاه داده و با کمک generic list ها انجام می دهیم.
کار را به صورت قدم به قدم شروع می کنیم:
1. ایجاد یک MVC Application
یک برنامه MVC ساده به صورت زیر ایجاد می کنیم:
نرم افزار Visual Studio 2013 را باز کرده و از گزینه File->New بر روی Project کلیک کرده و ASP.NET Web Application را انتخاب کنید، در همین جا نام مناسبی برای پروژه قرار دهید و نهایتا OK را بزنید. در صفحه بعدی MVC را انتخاب کرده و OK مجدد را بزنید تا پروژه ایجاد شود.
2. اضافه کردن کلاس های Model
در قسمت Solution Explorer بر روی پوشه Model راست کلیک کرده و یک کلاس با نام CityModel.cs یا هر نام دلخواه دیگر ایجاد کنید و کد زیر را به آن اضافه کنید:
کلاس CityModel.cs:
public class CityModel { //Value of checkbox public int Value { get; set; } //description of checkbox public string Text { get; set; } //whether the checkbox is selected or not public bool IsChecked { get; set; } } public class CityList { //use CheckBoxModel class as list public List<CityModel> Cities { get; set; } }
اضافه کردن کنترلر:
بر روی پوشه Controller راست کلیک کرده و یک کنترلر خالی با نام HomeController.cs ایجاد کنید:
حالا یک generic list ایجاد کنید و به جای رفتن به بانک اطلاعاتی رکوردها را به آن اضافه کنید.
:HomeController.cs
public ActionResult Index() { //Add Records into generic list List<CityModel> obj = new List<CityModel>() { new CityModel { Text = "کرج ", Value = 1, IsChecked = false }, new CityModel { Text = "تهران ", Value = 2, IsChecked = true }, new CityModel { Text = "اصفهان ", Value = 2, IsChecked = false }, new CityModel { Text = "تبریز ", Value = 2, IsChecked = false }, }; CityList objBind = new CityList(); objBind.Cities = obj; return View(objBind); } //Post and get checkbox checked records [HttpPost] public ActionResult Index(CityList Obj) { StringBuilder sb = new StringBuilder(); foreach (var item in Obj.Cities) { if (item.IsChecked) { //append each checked records into StringBuilder sb.Append(item.Text + ","); } } //store location into viewbag ViewBag.Loc = "محل کار شما " + sb.ToString(); //return location view to display checked records using viewbag return View("Locations"); } public ActionResult Locations() { return View(); }
اضافه کردن View
بر روی پوشه View راست کلیک کرده و یک View خالی با نام Index.cshtml اضافه می کنیم:
حالا View مربوط به Index.cshtml را باز می کنیم و کد زیر را در آن می نویسیم:
@model BindStronglyTypedCheckBox.Models.CityList @{ ViewBag.Title = "www.barnamenevisan.org"; } <div class = "form-horizontal" ><h4> محل کار خود را انتخاب کنید </h4> @using(Html.BeginForm()) { for(int i = 0; i<Model.Cities.Count; i++) {@Html.CheckBoxFor(m => Model.Cities[i].IsChecked) @Model.Cities[i].Text @Html.HiddenFor(m => Model.Cities[i].Value); @Html.HiddenFor(m => Model.Cities[i].Text) <br/> } <div class = "col-md-offset-2 col-md-10" ><input type = "submit" value = "ذخیره" class = "btn btn-default" /></div> @ViewBag.Loc } </div>
حالا همه چیز آماده است، برنامه را اجرا کنید و check box list به صورت زیر نمایان خواهد شد:
حالا یک یا چند از check box list ها را بزنید و با کلیک بر روی دکمه "ذخیره" خروجی به صورت زیر خواهد بود:
حالا دو گزینه انتخاب کنید:
از تمام مثال های بالا می آموزیم که چگونه می توانیم مقادیر check box ها را در کنترلر ASP.NET MVC دریافت کنیم.
در این مثال، ما CheckBoxList ها را با استفاده از generic list ها ایجاد کردیم، اگر بخواهید می توانید همین کار را با استفاده از پایگاه داده انجام دهید.
- ASP.net MVC
- 2k بازدید
- 5 تشکر