When I used the html Helper Checkbox, it produces 2 form elements. I understand why this is, and I have no problem with it except:
The un-checking of the checkbox does not seem to be in sync with the ‘hidden’ value.
What I mean is that when I have a bunch of checkboxes being generated in a loop:
<%=Html.CheckBox("model.MarketCategories[" & i & "].Value", category.Value)%>
and the user deselects and checkbox and the category.Value is FALSE, the code being generated is:
<input checked="checked" id="model_MarketCategories_0__Value" name="model.MarketCategories[0].Value" type="checkbox" value="true" />
<input name="model.MarketCategories[0].Value" type="hidden" value="false" />
This is wrong since the Value is False the checkbox should NOT be checked.
Any ideas why this is happening?
What’s worse, is when it’s submitted, it shows up as “true,false”. Very frustrating.
When you check the box programmatically, it doesn’t set the associated hidden field. You can easily work around this by writing the markup for the checkbox directly instead of using the MVC control.
I’ve had to do this myself just recently. It’s a pet peeve of mine.
See this link for more information on this.