type mvc example check asp.net-mvc checkbox html-helper

asp.net-mvc - mvc - html helpers checkbox



Html.CheckBox devuelve falso si está deshabilitado, incluso si se seleccionó (2)

1) Desde mi punto de vista, no hay forma de cambiar el comportamiento del método Html.CheckBox. Tuve que enfrentar el problema hace tiempo y terminé construyendo manualmente la casilla de entrada como sugieres. Para construir la casilla de verificación de entrada no siempre es el infierno ya que el uso de los métodos de ayuda no siempre es el oído. Por supuesto, biulding su propio método de ayuda puede ser la elección correcta.

2) El campo de entrada deshabilitado no se publica cuando se envía el formulario ; esperaría lo mismo, enviando fileds de casilla de entrada deshabilitados, estén o no marcados.

Podemos discutir acerca de la opción de retransmisión en el campo oculto de entrada para insertar la casilla de verificación de solicitud , cuando la casilla de verificación no está seleccionada. El efecto secundario de esta opción es que encontraremos el nombre de la casilla de verificación entre los datos publicados, incluso si la casilla de verificación está deshabilitada en desacuerdo con lo indicado anteriormente, es decir: el campo de entrada deshabilitado no se publica cuando se envía el formulario

Esperemos 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 así:

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

Espero que esto vuelva verdadero, ya que está verificado. 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 HtmlHelper se comporte como espero que sea? ¿O está construyendo manualmente la entrada / creando mi propio método de ayuda 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 asumir que una casilla de verificación desactivada que está marcada debe == cierto? ¿Significa semánticamente un estado desactivado falso?


Un campo de entrada marcado con el atributo disabled="disabled" NUNCA envía su valor al servidor. Si desea lograr esto, podría usar el atributo readonly="readonly" que aún impide que el usuario modifique el valor, pero envía el valor existente cuando se envía el formulario.