How to create CheckBoxList in MVC ?
You can create checkboxlist in MVC by using the Editor templates
Steps for creating checkboxlist
- Add class to modal folder in your project (MultiCheckListBox)
- Add Folder (EditorTemplates) to Views -> Shared as shown
(MultiCheckListBox) class should Look like this
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ExportToExcel.Models { public class MultiCheckListBox { public string ID { get; set; } public string DisplayLabel { get; set; } public bool Checked { get; set; } public string checkboxOnClick { get; set; } // for javascript Event } public class CheckListViewModal { public List<MultiCheckListBox> Cities { get; set; } } }
- Add Partial View to EditorTemplates folder.
- The view name should be same as a class name. as shown in screen shot
The Partial view (MultiCheckListBox) should look Like this.
@model ExportToExcel.Models.MultiCheckListBox <tr> <td> @Html.HiddenFor(x => x.ID) @Html.LabelFor(x => x.DisplayLabel, htmlAttributes: new { @style = "display:none;" }) @Html.CheckBoxFor(x => x.Checked, htmlAttributes: new { onclick = Model.checkboxOnClick }) </td> <td> @Html.LabelFor(x => x.Checked, Model.DisplayLabel) </td> </tr>
Add controller(CheckBoxExample) to controllers folder
it should look like this
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using ExportToExcel.Models; namespace ExportToExcel.Controllers { public class CheckBoxExampleController : Controller { // GET: CheckBoxExample public ActionResult CheckBoxExp() { var modal = new CheckListViewModal(); List<MultiCheckListBox> citylst = new List<MultiCheckListBox>(); for (int i = 1; i <= 20; i++ ) citylst.Add(new MultiCheckListBox() { ID = i.ToString(), Checked = false, DisplayLabel = "City "+i.ToString() }); modal.Cities = citylst; return View(modal); } [HttpPost] public ActionResult CheckBoxExp(CheckListViewModal modal) { var selected = modal.Cities.Where(x => x.Checked == true).ToList(); List<MultiCheckListBox> citylst = new List<MultiCheckListBox>(); for (int i = 1; i <= 20; i++) citylst.Add(new MultiCheckListBox() { ID = i.ToString(), Checked = selected.Where(x => x.ID == i.ToString()).ToList().Count > 0 ? true : false, DisplayLabel = "City " + i.ToString() }); modal.Cities = citylst; return View(modal); } } }
Add view to Action method (CheckBoxExp)
The view (CheckBoxExp) should look like this
@model ExportToExcel.Models.CheckListViewModal @{ ViewBag.Title = "CheckBoxExp"; Layout = "~/Views/Shared/_MyLayout.cshtml"; } <h2>Check Box List</h2> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <hr /> <div class="form-horizontal"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> <div class="col-md-offset-2 col-md-4"> <div class="panel panel-primary"> <div class="panel-heading">Select City</div> <div class="panel-body" style="height:200px;overflow:scroll;"> <table class="table table-bordered table-condensed"> @Html.EditorFor(x => x.Cities) </table> </div> </div> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-danger" /> </div> </div> </div> }
2 Comments
Thanks for the article.
ReplyDeletethank you! timban2.com
ReplyDeletePost a Comment