Comment Utiliser un Comparer Validateur avec DateTime.Aujourd'hui contre la zone de texte.Texte?

Objectif:
J'ai une 'date de fin' zone de texte que les mises à jour à l'utilisateur de le changer. Je veux être en mesure de vérifier/valider la date de EndDateTextBox.Texte et assurez-vous qu'il est inférieur à la date d'aujourd'hui (en format ex: 4/19/2013).

J'ai essayé deux méthodes:

De La Méthode

<asp:TextBox ID="HiddenTodayDate" Visible = "false" runat="server" />
<asp:CompareValidator ID="CompareEndTodayValidator" Operator="GreaterThan" Type="Date" 
     ControlToValidate="HiddenTodayDate" ControlToCompare="EndDateTextBox" 
     ErrorMessage="'End Date' must be before today's date" runat="server" />

Et le suivant dans ma méthode Page_Load:

HiddenTodayDate.Text = DateTime.Today.ToShortDateString();

Méthode Deux

<asp:HiddenField ID="HiddenTodayDate" runat="server" />
<asp:CompareValidator ID="CompareEndTodayValidator" Operator="GreaterThan" Type="Date" 
     ControlToValidate="HiddenTodayDate" ControlToCompare="EndDateTextBox" 
     ErrorMessage="'End Date' must be before today's date" runat="server" />

Et le suivant dans ma méthode Page_Load:

HiddenTodayDate.Value = DateTime.Today.ToShortDateString();

Le code savvy évidemment la fixation d'un TextBox visible à false empêche la Validator de les voir ainsi, mais je ne le savais pas à l'époque et je voulais document de mon processus. Quand j'ai essayer la méthode de deux, je tombe sur l'erreur suivante lors du débogage:

Contrôle HiddenTodayDate référencé par le ControlToValidate property
de " CompareEndTodayValidator ne peut pas être validée.

Description: Une exception non gérée s'est produite lors de l'exécution de
la demande web actuelle. Veuillez consulter la trace de la pile pour plus d'
informations sur l'erreur et où elle a son origine dans le code.

Détails De L'Exception: System.Web.HttpException: Le Contrôle 'HiddenTodayDate'
référencé par la propriété de ControlToValidate de
'CompareEndTodayValidator' ne peut pas être validée.

Source De L'Erreur:

Une exception non gérée s'est produite lors de l'exécution de la
demande web actuelle. Informations concernant l'origine et l'emplacement de
l'exception peut être identifié à l'aide de la trace de pile d'exception ci-dessous.

Donc, il y a un moyen de faire en quelque sorte à atteindre mon objectif sans avoir à afficher le type DateTime.Aujourd'hui, quelque part? Je préfère garder mon code aussi simple et propre que possible et ne pas utiliser Javascript, mais si Javascript fournit la seule solution, alors ainsi soit-il. Code serait grandement apprécié. Merci!

InformationsquelleAutor Kurt Wagner | 2013-04-19