2012-02-04 13 views
11

Tengo una vista parcial de Razor respaldada por un modelo de vista que contiene, entre otras cosas, un bool llamado UseDuo. Digamos que la propiedad UseDuo es cierto, y poner el código siguiente en mi maquinilla de afeitar:Html.CheckBoxFor no marcado aunque el valor del modelo es verdadero

@Html.CheckBox("UseDuo", Model.UseDuo) @* Not checked *@ 
@Html.CheckBoxFor(m => m.UseDuo) @* Not checked *@ 
@Html.CheckBox("UseDuo2", Model.UseDuo) @* checked *@ 
@(Model.UseDuo ? "UseDuo=true" : "UseDuo=false") @* outputs UseDuo=true *@ 

Las dos primeras casillas de verificación salido Sin marcar, pero el tercero se comprueba, y las últimas salidas de línea como "UseDuo = cierto". ¿Lo que da? De acuerdo con mi comprensión de estos helpers Html, las tres casillas de verificación deben ser revisadas. Pero parece que si el nombre de mi casilla de verificación coincide con el nombre de la propiedad de mi modelo, se niega a verificarse correctamente.

Intenté depurar en las fuentes .Net MVC, pero el depurador se negó a darme los valores para la mayoría de las variables invocadas, por lo que no fue de mucha ayuda.

Editar: Acabo de darme cuenta de que no hay una pregunta real aquí. Mi pregunta: ¿Por qué no se verifican las dos primeras casillas?

+1

Esto sucede en POST, ¿o siempre? –

+0

No estoy seguro de entender la pregunta. La página que contiene este Razor se está obteniendo con un GET. – eliah

Respuesta

19

Si @Html.CheckBoxFor(m => m.UseDuo) muestra una casilla de verificación no verificada y ha verificado que Model.UseDuo = true, entonces la única razón posible es que ya exista un valor UseDuo en el modelo que entre en conflicto con su modelo. Para garantizar que esto pruebe a quitar antes de devolver la vista:

ModelState.Remove("UseDuo"); 

O para toda desactive la ModelState:

ModelState.Clear(); 

Ahora el ayudante CheckBox recogerá el valor de su modelo. Si la casilla de verificación está marcada, deberá encontrar en qué parte de su código se insertó el valor UseDuo en el modelo de estado.

Cuestiones relacionadas