2012-02-04 9 views
11

Ho una vista parziale Razor supportata da un viewmodel che contiene, tra le altre cose, un bool chiamato UseDuo. Diciamo che la proprietà UseDuo è vero, e ho messo il seguente codice nel mio rasoio:Html.CheckBoxFor non selezionato anche se il valore del modello è true

@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 *@ 

Le prime due caselle di controllo vengono fuori non controllato, ma il terzo è selezionata, e le ultime uscite di linea come "UseDuo = vero". Cosa dà? In base alla mia comprensione di questi helper Html, è necessario controllare tutte e tre le caselle di controllo. Ma sembra che se il nome della mia casella di controllo corrisponde al nome della mia proprietà del modello, si rifiuta di essere controllato correttamente.

Ho provato a eseguire il debug nelle sorgenti MVC .Net, ma il debugger ha rifiutato di darmi i valori per la maggior parte delle variabili inverse, quindi non è stato di grande aiuto.

Modifica: Ho appena realizzato che non ci sono domande reali qui. La mia domanda: perché non vengono controllate le prime due caselle?

+1

Questo succede nel POST, o sempre? –

+0

Non sono sicuro di aver capito la domanda. La pagina che contiene questo Rasoio viene recuperata con un GET. – eliah

risposta

19

Se @Html.CheckBoxFor(m => m.UseDuo) rende una casella di controllo non controllati e si è verificato che Model.UseDuo = true allora l'unica ragione possibile è che ci sia già un valore UseDuo nel ModelState che è in conflitto con il modello. Per garantire questo provare ad estrarla prima di tornare la vista:

ModelState.Remove("UseDuo"); 

O per intero deselezionare la ModelState:

ModelState.Clear(); 

Ora l'assistente CheckBox vi verrà a prendere il valore dal modello. Se la casella è selezionata, dovrai trovare in quale parte del tuo codice è stato inserito il valore UseDuo nello stato del modello.

Problemi correlati