0

J'ai un champ SmallDateTime dans ma base de données Sql Server 2008 pour stocker les anniversaires des utilisateurs.ASP.NET MVC 3 Liaison et validation de la date au contrôle de la zone de texte html

Sur ma page Web 'Modifier le profil', j'ai un textbox standard que je veux lier la date d'anniversaire à (sauf le temps que ce n'est pas nécessaire). À l'heure actuelle, je suis lié à la zone de texte, mais il rend la date et l'heure complètes. En outre, lorsque l'utilisateur met à jour son profil, je souhaite pouvoir valider la zone de texte Anniversaire, en vérifiant que la valeur spécifiée est conforme à dd/mm/yyyy et que tout écart par rapport à cela est mis en évidence via mon résumé de validation existant sur la page.

Comment puis-je aller sur:

a) la configuration de la propriété Anniversaire dans mon ViewModel pour afficher au format dd/mm/yyyy (à l'exclusion du temps). B) valider Birthday (basé sur le format dd/mm/yyyy) lorsque l'utilisateur soumet le formulaire?

Répondre

1
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)] 
public DateTime DateOfBirth { get; set; } 

Cela devrait vous donner la mise en forme automatique sur le terrain (sans que vous ayez à faire manuellement) et aussi la validation.

0

J'utilise habituellement une propriété de chaîne associé à l'objet DateTime, quelque chose comme

public string MyDateStr 
{ 
    get 
    { 
     return MyDateDate == null ? "" : MyDateDate.ToShortDateString(); 
    } 
    set 
    { 
     // Usually a tryParse for the string value 
    } 
} 

Je sais que ce n'est pas la manière canonique, mais jusqu'à présent, est le plus rapide que je l'ai trouvé.

HTH

M.

EDIT: pour les choses de validation voir ceci: other question on SO

0

a) vous pouvez utiliser .ToShortDateString pour rendre votre datetime sans temps. Le format dépend toujours des paramètres par défaut de la globalisation.

b) pour valider, vous pouvez le faire avec annotations données sur votre modèle comme celui-ci:

[DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy")] 
public DateTime Birthday { get; set; } 
Questions connexes