2012-02-11 10 views
8

He creado un modelo en mi asp.net MVC 3 página web y tienen una propiedad denominada DateOpened:campo Fecha que da un error en la validación requerida

[Column("Date Opened")] 
     [Display(Name = "Date Opened:")] 
     [DataType(DataType.Date)] 
     [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
     public DateTime DateOpened { get; set; } 

No me aplico [Obligatorio] anotación de los datos a ella, pero cuando intento guardar el formulario, dice campo obligatorio. En la base de datos es nulo.

Por favor, sugiera la solución.

Respuesta

15

Eso es normal. DateTime es un tipo de valor que significa que siempre requerirá un valor. El proveedor de metadatos modelo en ASP.NET MVC agrega automáticamente el atributo requerido a tipos de datos que no admiten nulos. Puede utilizar un Fecha y hora que admite nulos:

[Column("Date Opened")] 
[Display(Name = "Date Opened:")] 
[DataType(DataType.Date)] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
public DateTime? DateOpened { get; set; } 
+0

Gracias por su respuesta. Modifiqué el modelo pero ahora recibo este error de conversión: ¿No se puede convertir implícitamente el tipo 'System.DateTime?' a 'System.DateTime'. Existe una conversión explícita (¿falta un elenco?) En las páginas en las que estoy usando DateOpened – DotnetSparrow

+1

@DotnetSparrow, ¿cómo está utilizando esta propiedad? Para acceder al valor de un tipo que admite nulos, debes usar su propiedad '.Value':' DateOpened.Value'. –

Cuestiones relacionadas