2010-07-20 4 views
1

J'essaie d'effectuer des tests de validation dans VB.NET.Conversion d'une chaîne vide en une date, puis de retour

If Entity.WeekEndDate.ToString = String.Empty Then 
      ErrorList.Add(New cValidationError("id", "Incorrect Week End Date")) 

Où WeekEndDate est de type Date. Lorsque je construis l'objet à l'origine, comment puis-je insérer une valeur dans WeekEndDate qui va générer une chaîne vide (ie. "") Lors de la conversion d'une date en une chaîne?

Répondre

4

Il pourrait être préférable d'utiliser MinValue pour représenter une date non valide:

If Entity.WeekEndDate = DateTime.MinValue Then 
    ErrorList.Add(New cValidationError("id", "Incorrect Week End Date")) 

En règle générale, vous ne devriez pas être en train de convertir des dates pour les chaînes et les comparer. Comparez en tant que type de données d'origine (dans ce cas, DateTime).

+0

Nullable date encore mieux? –

+0

Je crois que les contrôles de date de winforms out-of-the-box ont des problèmes avec des dates nulles ... –

+0

Je n'ai pas écrit cet objet de validation à l'origine, donc je ne savais pas à quoi ils essayaient de vérifier. Merci pour la contribution! –

0
WeekEndDate = Nothing 
0

Il n'y a pas de valeur de date qui produira une chaîne vide lorsque vous appelez ToString. Si vous avez besoin de cette fonctionnalité, la colonne doit être nullable dans votre base de données et votre entité doit utiliser le type Nullable(Of DateTIme) pour la valeur.

Vous pouvez alors dire:

If Entity.WeekEndDate Is Nothing Then 
    ErrorList>Add(new cValidationError("id", "Incorrect Week End Date")) 

Et pour produire l'erreur, il suffit de dire:

Entity.WeekEndDate = Nothing 
Questions connexes