How to use @Html.CheckBoxFor() while dealing with a List<ViewModel>
asp.net-mvc-3, c#, html-helper, razor
Solution
Change foreach with for
@for(int i = 0; i < Model.RoleAccess.Count; i++)
{
Html.CheckBoxFor(Model.RoleAccess[i].IsEnabled, new { id = Model.RoleAccess[i].MenuID });
Html.DisplayFor(Model.RoleAccess[i].MenuDisplayName); // or just Model.RoleAccess[i].MenuDisplayName
}
Problem
This is my View. How to use CheckboxFor(): ``` @using eMCViewModels; @model eMCViewModels.RolesViewModel @{ ViewBag.Title = "CreateNew"; } <h2> CreateNew< /h2> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>RolesViewModel</legend> <div class="editor-label"> @Html.LabelFor(model => model.Name) </div> <div class="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) </div> <div> @foreach (RoleAccessViewModel mnu in Model.RoleAccess) { // How to use checkboxfor here? } </div> <p> <input type="submit" value="Create" /> </p> </fieldset> } <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") } ``` `Model.RoleAccess` is a `List<RoleAccessViewModel>` and I want to create checkbox using `@Html.CheckBoxFor()`. This is my `RoleAccessViewModel` ``` public class RoleAccessViewModel { public int RoleID { get; set; } public string RoleName { get; set; } public int MenuID { get; set; } public string MenuDisplayName { get; set; } public string MenuDiscription { get; set; } public string IsEnabled { get; set; } // changed to bool } ``` Suppose I have 5 items in list, then I need 5 checkbox with ID=menuID and Text = menuDisplayName. How can I achieve this? EDIT My attempt ``` @Html.CheckBoxFor(x=>x.RoleAccess.SingleOrDefault(r=>r.MenuID==mnu.MenuID).IsEnabled ) @Html.LabelFor(x=>x.RoleAccess.SingleOrDefault(r=>r.MenuID==mnu.MenuID ).MenuDisplayName ) ``` But after changing the type of `IsEnabled` from `string` to `bool`. The checkbox works. But Label prints only `MenuDisplayName` instead of values . Can any one helps ?