In ASP.NET MVC a checkbox is generated by the HtmlHelper code here:

```
<%= Html.CheckBox("List_" + mailingList.Key, true) %> 

```

as this HTML:

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

```

In case you're wondering why is there an extra hidden field? - then [read this](https://stackoverflow.com/questions/220020#479220). Its definitely a solution that makes you first think 'hmmmmm' but then you realize its a pretty elegant one.

The problem I have is when I'm trying to parse the data on the backend. Well its not so much of a problem as a concern if anything in future were to change in the framework.

If I'm using the built in binding everything is great - its all done for me. But in my case I'm dynamically generating checkboxes with unknown names and no corresponding properties in my model.

So i end up having to write code like this :

```
if (forms["List_RETAIL_NOTIFICATION"] == "true,false") {

}

```

or this: 

```
if (forms.GetValues("List_RETAIL_NOTIFICATION")[0] == "true") {

}

```

Both of which i still look at and cringe - especially since theres no guarantee this will always be the return value. I'm wondering if theres a way to access the layer of abstraction used by the model binders - or if I'm stuck with my controller 'knowing' this much about HTTP POST hacks. 

Yes I'm maybe being a little picky - but perhaps theres a better clever way using the model binders that I can employ to read dynamically created checkbox parameters. 

In addition i was hoping this this post might help others searcheing for : "true,false". Even though I knew why it does this I just forgot and it took me a little while to realize 'duh'.

---

FYI: I tried another few things, and this is what I found :

`forms["List_RETAIL_NOTIFICATION"]` evaluates to "true,false"
`forms.GetValues("List_RETAIL_NOTIFICATION")[0]` evaluates to "true" 
`(forms.GetValue("List_RETAIL_NOTIFICATION").RawValue as string[])[0]` evaluates to "true"
`forms.GetValues("List_RETAIL_NOTIFICATION").FirstOrDefault()` evaluates to "true"