estoy usando una casilla de verificación en un formulario ASP.NET MVC así:asp.net mvc casilla inconsistencia
<%=Html.CheckBox("AgreeToRules", Model.AgreeToRules)%>
La propiedad AgreeToRules en el modelo es un valor booleano. Durante la prueba, todo funcionó bien. Sin embargo, ahora que hemos ido en directo con esta aplicación, estoy viendo un grupo relativamente pequeño pero significativo número de errores con los siguientes mensajes:
System.Web.HttpUnhandledException: excepción de tipo Sistema'. Se lanzó Web.HttpUnhandledException ' . ---> System.InvalidOperationException: Falló la conversión del parámetro del tipo 'System.String' al tipo 'System.Boolean'. Consulte la excepción interna para obtener más información. ---> System.FormatException: Y no es un valor válido para Boolean. ---> System.FormatException: String no fue reconocido como un booleano válido.
Esto parece ocurrir cuando el motor vista intenta reproducir el formulario después de un poste, y el valor de la casilla de verificación que se devuelve desde el ValueProvider parece:
Y, falsa
O
N, falsa
el código HTML que se representa en la forma original se parece a:
<input id="AgreeToRules" name="AgreeToRules" type="checkbox" value="true" />
<input name="AgreeToRules" type="hidden" value="false" />
Durante las pruebas, que esperaba (y mostré) el valor publicado para parecerse a:
verdadero, falso
si está marcada o
fa lse
si no se selecciona. Entonces, ¿de dónde viene el N y el Y?
Agregué el agente de usuario a la lista de información devuelta por el controlador de errores y parece (hasta ahora) que todos los errores se producen en Windows XP con FF 3.0.10, pero eso es exactamente con lo que he probado y el problema no existió durante la prueba.
¿Alguna idea?
Y y N? ¿No es eso lo que utiliza Microsoft Jet (utilizado por Access) para sus campos booleanos? – Powerlord
Quizás, pero como esto no tiene nada que ver con Jet o Access, no estoy seguro de que sea relevante. – Chris
Voy a publicar algo. Puse una respuesta ahora eliminada: Acabo de verificar las especificaciones de HTML, y el valor predeterminado para una casilla de verificación está implícito que está "activado", no se da ningún valor; No tengo idea de dónde podrían proceder Y o N, a menos que sea ASP.NET MVC específico. – Powerlord