web-dev-qa-db-fra.com

Asp.net compare le validateur pour valider la date

Comme vous le savez tous, les validateurs Compare peuvent être utilisés pour valider les dates et vérifier en fonction du type d'opérateur (<, <=,> = etc). J'ai défini la propriété cultureinvariantvalues="true" pour valider deux contrôles de zone de texte contenant des dates. Je dois les contraindre de manière à ce que la date de début soit antérieure à la date de fin. La validation semble échouer lorsque je tape une date descriptive comme ci-dessous:

StartDate: Tuesday, 21 February 2012

FinishDate: Wednesday, 22 February 2012

Même si 22 est supérieur au 21, la validation échoue. Le balisage que j'ai utilisé est ci-dessous. Si, pour une raison quelconque, vous avez besoin d'informations sur le format, il s'agit ici de dddd, dd MMMM yyyy

<asp:CompareValidator id="cvtxtStartDate" runat="server" 
       controltocompare="txtFinishDate" 
       cultureinvariantvalues="true" 
       display="Dynamic" 
       enableclientscript="true" 
       controltovalidate="txtStartDate" 
       errormessage="Start date must be earlier than finish date" 
       type="Date" 
       setfocusonerror="true" 
       operator="LessThanEqual" 
       text="Start date must be earlier than finish date">
9
Deeptechtons

Essayez cette approche, entrez d’abord la date de début et vérifiez le champ de comparaison du validateur avec la date de fin:

<asp:CompareValidator id="cvtxtStartDate" runat="server" 
     ControlToCompare="txtStartDate" cultureinvariantvalues="true" 
     display="Dynamic" enableclientscript="true"  
     ControlToValidate="txtFinishDate" 
     ErrorMessage="Start date must be earlier than finish date"
     type="Date" setfocusonerror="true" Operator="GreaterThanEqual" 
     text="Start date must be earlier than finish date"></asp:CompareValidator>
27
Ebad Masood

Le validateur de comparaison a le type = date.Mais ce type de date est contraint à accepter uniquement un format de date particulier, par exemple ToShortDateString (). Si le format de date des deux zones de texte à comparer est dans un autre format comme ToLongDateString ( ) ou un format spécifié par ToString ("jj MMMM, aaaa"), la comparaison ne fonctionne pas. Option CustomValidator isonly. Si vous souhaitez utiliser le validateur de comparaison uniquement, alors 

textstartdate.text=Calendar1.SelectedDate.ToShortDateString();
textfinishdate=Calendar2.SelectedDate.ToShortDateString();
<asp:CompareValidator ID="CompareValidator4" runat="server" 
                    ControlToCompare="textstartdate" ControlToValidate="textfinishdate" 
                    CultureInvariantValues="True" 
                    ErrorMessage="Date should be greater than booking date." 
                    Operator="GreaterThanEqual" SetFocusOnError="True" Type="Date"></asp:CompareValidator>
4
Abhishek kumar
function FromAndToDateValidate() {
try {
    var StartDate = new Date();
    StartDate = $("#dtpFromDate").val();

    var EndDate = new Date();
    EndDate = $("#dtpToDate").val();
    args.IsValid = (StartDate <= EndDate);
}
catch (ex) {
    alert(ex);
}
}

Essayez le Validator personnalisé et, au niveau du code situé derrière l'événement onservervalidate, convertissez le texte en DateTime, puis effectuez la comparaison.

protected void DateTimeComparision_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = Convert.ToDateTime(txtStartDate.Text) < Convert.ToDateTime(txtFinishDate.Text);
    }
0
Neeraj Gulia