2012-02-11 18 views
8

ho creato un modello nel mio asp.net MVC 3 sito web e hanno una proprietà denominata DateOpened:Data campo dà errore richiesto sulla convalida

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

non mi applico [Required] annotazione dei dati ad esso, ma quando provo a salvare il modulo, dice campo obbligatorio. Nel database è nullo.

Si prega di suggerire una soluzione.

risposta

15

È normale. DateTime è un tipo di valore che significa che richiederà sempre un valore. Il provider di metadati del modello in ASP.NET MVC aggiunge automaticamente l'attributo richiesto a tipi di dati non annullabili. È possibile utilizzare un valore DateTime nullable:

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

Grazie per la risposta. Ho modificato il modello ma ora ricevo questo errore di cast: Impossibile convertire implicitamente il tipo "System.DateTime?" a 'System.DateTime'. Esiste una conversione esplicita (ti manca un cast?) Nelle pagine in cui sto usando DateOpened – DotnetSparrow

+1

@DotnetSparrow, come stai usando questa proprietà? Per accedere al valore di un tipo nullable devi usare la sua proprietà '.Value':' DateOpened.Value'. –

Problemi correlati