@Html.CheckBox("orderNumbers", new { value = 1 })
@Html.CheckBox("orderNumbers", new { value = 2 })
@Html.CheckBox("orderNumbers", new { value = 3 })
@Html.CheckBox("orderNumbers", new { value = 4 })
@Html.CheckBox("orderNumbers", new { value = 5 })
[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<int> orderNumbers) { }
[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<string> orderNumbers) { }
If I use the first signature in my action method, I get an empty IEnumerable.
If I use the second signature I do receive the values but I also receive a false value for the unselected values (because of MVCs pattern of shadowing all checkboxes with a hidden field).
e.g. I will receive something like orderNumbers = { "1", "2", "false", "4", "false" }
Why can’t I just get the list of numbers?
Because thats how the provided
CheckBoxForhelper is working.You have to generate the html for the checkboxes yourself. Then the hidden inputs are not generated and you will get only the selected integer values.