Setting html attribute that is reserved keyword in Html.CheckBoxFor in ASP.NET MVC

jcvandan picture jcvandan · Apr 22, 2010 · Viewed 10.5k times · Source

I am using the HtmlHelper to create a checkbox in my view like so:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { checked = "checked" })%>

However, an error is being thrown as checked is a reserved keyword. I have found a couple of people saying that you must use the 'reserved word prefix' and simply put an uderscore in front of the attribute like so:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { _checked = "checked" })%>

This does not generate an error but in the generated html the attribute is actually '_checked' which means it doesn't work (if I use firebug and remove the underscore the attribute then takes effect).

Does anyone know a way around this while still using CheckBoxFor?

Thanks

Answer

WestDiscGolf picture WestDiscGolf · Apr 22, 2010
<%= Html.CheckBoxFor(model => model.SeatOnly, new { @checked = "checked" })%>

You need to prefix it with an '@' :-)

Update

Just tested with the following and works. Try this ...

Model

public class MyModel
{
    public bool SomeBooleanValue { get; set; }
    public string Title { get; set; }
}

View (snipped to only the important bits)

<%= Html.TextBoxFor(x => x.Title) %>

<%= Html.CheckBoxFor(x => x.SomeBooleanValue, new { @checked = "checked" }) %>