Please explain Html.CheckBoxFor() rendering

  • Thread starter Thread starter J055
  • Start date Start date
J

J055

Hi

When I use this:

<%= Html.CheckBoxFor(m => m.CopyAddress)%>

it produces html like:

<input checked="checked" id="CopyAddress"
name="CopyAddress" type="checkbox" value="true" /><input name="CopyAddress"
type="hidden" value="false" />

or

<input id="CopyAddress" name="CopyAddress"
type="checkbox" value="true" /><input name="CopyAddress" type="hidden"
value="false" />

which means the System.Web.Mvc.FormCollection for value CopyAddress are
either "false" or "true,false".

Can someone explain the logic and provide an example of how to use it to get
either a true or false value?

Thanks
Andrew
 
Hi

When I use this:

<%= Html.CheckBoxFor(m => m.CopyAddress)%>

it produces html like:

                    <input checked="checked" id="CopyAddress"
name="CopyAddress" type="checkbox" value="true" /><input name="CopyAddress"
type="hidden" value="false" />

or

                    <input id="CopyAddress" name="CopyAddress"
type="checkbox" value="true" /><input name="CopyAddress" type="hidden"
value="false" />

which means the System.Web.Mvc.FormCollection for value  CopyAddress are
either "false" or "true,false".

Can someone explain the logic and provide an example of how to use it to get
either a true or false value?

Thanks
Andrew

Please check this thread
http://forums.asp.net/t/1314753.aspx
 
Thanks

Rendering a dumb hidden field for every checkbox is a messy business. I
guess if model binding requires it then so be it. I'm not using model
binding at the moment so I created this function to handle bool values in
the FormCollection when using Html.CheckBoxFor.

private static bool CoerceToBool(string s)
{
if (string.IsNullOrEmpty(s)) return false;

var a = s.Split(',');
foreach (string t in a)
{
bool value;
if (bool.TryParse(t, out value) && value) return true;
}
return false;
}

Cheers
Andrew
 
Back
Top