asp.net-mvc checkboxfor

ASP.net MVC CheckBoxPara error de conversión



asp.net-mvc checkboxfor (1)

Tengo una entidad de EF que está vinculada a una tabla SQL que contiene un campo de bits llamado "Activo". Genero el código de edición de la plantilla T4 y la página se hereda de la entidad EF. En la parte inferior de la página, generó un CheckBoxFor como este:

<%= Html.CheckBoxFor(model => model.Active) %>

Obtengo el maravilloso rojo ondulado debajo del modelo. Activo, y el mensaje de error dice que no puedo convertir implícitamente el tipo bool? a bool Entonces, probé lo siguiente:

<%= Html.CheckBoxFor(model => (bool)model.Active) %>

Eso, por supuesto, no me gustó y me dio este error:

System.InvalidOperationException: las plantillas solo se pueden usar con acceso a campos, acceso a propiedades, índice de matriz de dimensión única o expresiones de indizador personalizado de un solo parámetro.

Probablemente me esté perdiendo algo simple.


Probar model.Active.Value

Si este campo no puede ser anulable, debe cambiar el tipo de datos en el lado de la base de datos para que not null .

EDITAR

¿Por qué pasó esto?

El campo de su base de datos se define como FIELDNAME BIT NULL . Significa que puede contener tres valores: NULL, true y false. Dado que puede contener tres valores, se asigna a bool? escriba en el marco de la entidad. bool es otro nombre de Nullable<bool> , que se ajusta alrededor de bool y le permite tener un tercer valor: NULL. Dado que CheckBoxFor espera uno de dos valores: verdadero o falso, no puede exceptuar Nullable<bool> . Cada Nullable tiene una propiedad llamada valor que devuelve el tipo envuelto. Pero debe tener en cuenta que cuando el campo de la base de datos contenga un valor Nullable<bool>.Value . El valor arrojará un error. Si está seguro de que este campo no debe contener valores NULL, debe cambiar su tipo de datos a FIELDNAME BIT NOT NULL y generar nuevamente el modelo a partir de la base de datos. Esto cambiará el tipo de datos de bool? a bool y no habrá necesidad de llamar a la propiedad Value.