[RESOLVED]how to get the selected checkbox values from view to controller through model data

public class checkbox


int id;

string name;

bool selected;


and I call this in viewmodel as List<checkbox> list

when I am binding the list into view is successfully but when I am getting the selected values the model data shows list: count=0 when selected otherwise shows null

@foreact(var item in model.list){

<input type="checkbox" @selected name="list" value="@item.id">


how can I get these values from view to controller

this is not good 



Please read http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

Hi Siva,

assign a name to your checkbox:

<input name="gender" type="checkbox" id="@checkBoxId" class="chkclass" value="@names.Value" />

Then in your action do something like below:

        public ActionResult HandleFormSubmit(string[] gender,
             MembershipFormViewModel model)
            //model not valid, do not save, but return current umbraco page
            if (ModelState.IsValid == false)
                return CurrentUmbracoPage();
            string test = "Gender: " + model.Gender + Environment.NewLine; //getting null here
            return RedirectToCurrentUmbracoPage();


you need to understand how checkboxes post their data. if they have a name attribute, when checked, they post name=value, else if not checked its value is not included in the postback data. so if you had three checkboxes

   <input type="checkbox" name="list" value="1" checked>
   <input type="checkbox" name="list" value="2" >
   <input type="checkbox" name="list" value="3" checked>

and the user did not change the check, the postback data would include:


the mvc binder can bind this data to a string array or numeric array. but that is not what you have. if you change the checkboxes to:

  <input type="checkbox" name="list.id" value="1" checked>
   <input type="checkbox" name="list.id" value="2" >
   <input type="checkbox" name="list.id" value="3" checked>

the binder could blind it your list, but it would only contain 2 entries, and only the id would be filled in. to get you complete list posted back it would be:


@for(var i=0; i < model.list.Count; ++i){

if you wanted to manually handle the  checkbox its:

    <input type="checkbox" @(Model.list[i].selected ? "checked" : "") name="list[@(i)]" value="true">

Leave a Reply