tengo una casilla de verificación de esta manera:Asp.Net MVC 2 Casilla siempre falsas en el modelo
<%= Html.CheckBoxFor(x => x.IsSendingQualitySurvey) %>/>
al comprobar la casilla de verificación y presentación, puedo obtener los valores típicos 2 forman:
IsSendingQualitySurvey: true
IsSendingQualitySurvey: false
Este es perfectamente válido para la forma en que mvc modelbinder maneja las casillas de verificación.
Luego, en la acción del controlador:
[HttpPost]
public ActionResult Edit(Guid id, TicketEditViewModel ticketEditViewModel)
ticketEditViewModel.IsSendingQualitySurvey
(un bool normal) siempre es falsa.
No tengo ningún ligante modelo personalizado y funciona en otro lado. Curiosamente he tenido el mismo problema en otra vista hace ya bastante tiempo, donde tuve que crear manualmente la entrada, se ve así:
<input type="checkbox" value="true" name="<%=Html.NameFor(x => x.IsRequestingVisit) %>" id="<%=Html.NameFor(x => x.IsRequestingVisit) %>" />
Esto funcionó, pero cuando he copiado exactamente el mismo a lo largo la otra vista, el valor sigue siendo siempre falso.
Wheres the catch?
Gracias.
me olvidaba decir que el modelo es en realidad llena de la manera correcta, sólo la falta de una propiedad. Además, no creo que al encuadernador de modelos le importe el prefijo, ya que ni siquiera se transfiere a la entrada resultante, ¿está seguro de esto? –
El encuadernador de modelos analiza los valores contenidos en la Cadena de consultas o la Colección de formularios e intenta vincular las propiedades por su nombre. Sus campos ID/Nombre en el lado del cliente (generados por los ayudantes HTML) contienen el espacio de nombres y son el resultado directo de la convención de nomenclatura que utiliza para las variables. Si tiene modelos complejos o si crea variables en la página, notará que HTML Helper generará prefijos en sus controles que coincidan con los nombres de sus variables. Puede haber algo de lógica en la carpeta del modelo que cubra los nombres que no coinciden, pero no puedo asegurarlo sin desenterrar un reflector. –
Hmm, ¿entonces tal vez porque estoy pasando dos parámetros, la carpeta podría introducir espacios de nombres y en ese caso no encontrar el parámetro del modelo debido a mis convenciones? Aún no he visto esos espacios de nombres. Lo investigaré mañana, gracias hasta ahora. –