Html.CheckBox devuelve falso si está deshabilitado, incluso si está seleccionado

Espero que sea una pregunta fácil para ustedes gurús de asp.net mvc:

Tengo una casilla de verificación, creada así:

<%=Html.CheckBox("MyCheckBox", true, new { disabled = "disabled"})%>

En mi acción, estoy verificando el valor de esta manera:

bool isChecked = form["MyCheckBox"].Contains("true");

Espero que esto vuelva verdadero, ya que está marcado. Sin embargo, el elemento oculto que se crea tiene un valor falso:

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

Primero, ¿hay alguna manera de hacer que el HtmlHelper se comporte como espero? ¿O está construyendo manualmente la entrada / creando mi propio método auxiliar de la única manera? (No es que esto sea un gran problema ...)

En segundo lugar, ¿alguien puede arrojar algo de luz sobre por qué las casillas de verificación se comportan de esta manera? ¿Soy incorrecto al suponer que una casilla de verificación deshabilitada que está marcada debería == verdadero? ¿Un estado deshabilitado significa semánticamente falso?