ثبت CheckBoxListFor و دریافت مقادیر انتخاب شده در کنترلر MVC

در این مقاله می آموزیم که چگونه می توان CheckBoxListFor در HTML را ثبت کرد و مقادیر انتخاب شده آن را در کنترلر ASP.NET MVC دریافت نمود. ما این کار را بدون استفاده از پایگاه داده و با کمک generic list ها انجام می دهیم.

ثبت CheckBoxListFor و دریافت مقادیر انتخاب شده در کنترلر MVC

کار را به صورت قدم به قدم شروع می کنیم:

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 ها ایجاد کردیم، اگر بخواهید می توانید همین کار را با استفاده از پایگاه داده انجام دهید.

فایل های ضمیمه
دانلود نسخه ی PDF این مطلب