To bind checkbox with enum, we have to write some custom code. Here, below is the example of binding checkbox with enum.
Suppose we have a enum EmployeeGroup
public enum EmployeeGroup
{
[Display(Name = "Group 1")]
Group1,
[Display(Name = "Group 2")]
Group2,
[Display(Name = "Group 3")]
Group3,
[Display(Name = "Group 4")]
Group4,
}
then we have to create another enum for a store its bool value i.e either the value is selected or not.
public class EnumModel
{
public EmployeeGroup EmployeeGroup { get; set; }
public bool IsSelected { get; set; }
}
and it is used in the main model as :
public class EmployeeModel
{
public int Id { get; set; }
public string Name { get; set; }
public List<EnumModel> CheckBoxEmployeeGroup { get; set; }
}
In Controller:
We have to fill CheckBoxEmployeeGroup as below:
public ActionResult View()
{
EmployeeModel model = new EmployeeModel();
model.CheckBoxEmployeeGroup = new List<EnumModel>();
foreach (EmployeeGroup employeeGroup in Enum.GetValues(typeof(EmployeeGroup)))
{
model.CheckBoxEmployeeGroup.Add(new EnumModel() { EmployeeGroup = employeeGroup, IsSelected = false });
}
return View(model);
}
In View:
Employee Group :
@for (int i = 0; i < Model.CheckBoxEmployeeGroup.Count; i++)
{
@Html.DisplayFor(m => m.CheckBoxEmployeeGroup[i].EmployeeGroup);
@Html.CheckBoxFor(m => m.CheckBoxEmployeeGroup[i].IsSelected);
@Html.HiddenFor(m => m.CheckBoxEmployeeGroup[i].EmployeeGroup);
}
@Html.ValidationMessageFor(model => model.EmployeeGroup, "", new { @class = "text-danger" })
Hope, this code will help you. Thanks
0 Comment(s)