Domanda

Voglio usare annotazioni dati per convalidare i campi DateTime, ma sto correndo in problemi. Secondo la documentazione su MSDN ( http: // MSDN. microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute.aspx ), il seguente dovrebbe fare il lavoro

[Range(typeof(DateTime), "1/2/2004", "3/4/2004",
    ErrorMessage = "Value for {0} must be between {1} and {2}")]

Tuttavia, questo segna una data che entra come non valido!

In un primo momento ho pensato che non stava raccogliendo le date nel Regno Unito (quando ho cercato 26/2/2004), ma non può anche ottenere in modo da utilizzare le date come il 2/2/2004.

Io sto usando i dataannotations all'interno MVC2, e utilizzando il framework per la validazione lato client MicrosoftAjax.

Qualche suggerimento?

Grazie

È stato utile?

Soluzione

Bene, pochi anni sono andati passato e ho rivisitato questo stesso problema con MVC4 e posso dirvi che ha apparentemente stato risolto.

Ho creato un sito molto semplice MVC4 di default, e ha dato un membro di data i seguenti attributi

    [Required]
    [DataType(DataType.Date)]
    [Range(typeof(DateTime), "1/2/2004", "3/4/2004", ErrorMessage = "Value for {0} must be between {1} and {2}")]
    public DateTime BlogDate { get; set; }

La convalida ora funziona perfettamente con il sistema i dati del Regno Unito, non consentire una data 2004/02/01, permettendo una data di 4/3/2004 o 26/3/2004.

Il modello che stavo usando ha approfittato di EF4 codice prima, ma non ho alcun motivo di sospettare che non è stato fissato in generale, dal momento che il javascript funziona correttamente anche.

Quindi, se si utilizza MVC2 questo può ancora essere un problema, ma la soluzione migliore che ho trovato è quello di utilizzare MVC4 fintanto che è disponibile per voi.

Altri suggerimenti

Per quanto ne so il RangeAttribute può convalidare solo numero sul lato client, dovrete scrivere un JavaScript personalizzato validatore per questo lavoro ...

http://haacked.com/archive /2009/11/19/aspnetmvc2-custom-validation.aspx per un esempio su come fare questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top