2010-02-12 5 views
3

Je souhaite utiliser les annotations de données pour valider les champs DateTime, mais je rencontre des problèmes. Selon la documentation sur MSDN (http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute.aspx), ce qui suit devrait faire le travailChamps d'annotation de données des champs UK Datetime

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

Cependant, cette marque une date que j'entre comme invalide! Au début, je pensais qu'il ne ramassait pas les dates du Royaume-Uni (quand j'ai essayé 26/2/2004) mais je ne peux même pas l'utiliser pour utiliser des dates comme 2/2/2004. J'utilise les notifications de données dans MVC2, et en utilisant le framework MicrosoftAjax pour la validation côté client.

Des suggestions?

Merci

Répondre

2

Eh bien, quelques années ont passé et j'ai revu ce même problème avec MVC4 et je peux vous dire qu'il a apparemment été résolu.

J'ai créé un site MVC4 par défaut très simple, et a donné un membre de date, les attributs suivants

[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 validation fonctionne désormais parfaitement sous système de données au Royaume-Uni, interdisant une date 01/02/2004, ce qui permet une date du 03/04/2004 ou 26/3/2004. Le modèle que j'utilisais tirait parti du code EF4, mais je n'ai aucune raison de penser qu'il n'a pas été corrigé en général, puisque le javascript fonctionne correctement. Donc, si vous utilisez MVC2, cela peut toujours poser problème, mais la meilleure solution que j'ai trouvée est d'utiliser MVC4 aussi longtemps que vous le pouvez.

+0

Qu'est-ce que le code EF-premier a à voir avec quoi que ce soit dans cette réponse ? Cette validation ne se rapproche jamais de votre DAL. – ProfK

1

Pour autant que je sais que le RangeAttribute ne peut valider le numéro sur le côté client, vous devez écrire une coutume javascript validateur pour que cela fonctionne ...

départ http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx pour un exemple sur la façon de le faire.

+0

Mon problème pour le moment est que je n'arrive pas à le faire fonctionner du côté serveur! Le côté client est quelque chose que je dois trier une fois que le côté serveur fonctionne. –

+0

Eh bien, cela fonctionne pour moi, comment affichez-vous votre champ, afin que vos attributs fonctionnent, je pense que vous devez utiliser la méthode Html.EditorFor ou Html.Editor –

Questions connexes