2012-02-21 30 views
9

Como todos ustedes saben, los validadores de comparación se pueden usar para validar fechas y verificar según el tipo de operador (<, < =,> = etc). Establecí la propiedad cultureinvariantvalues="true" para validar dos controles de cuadro de texto que contienen fechas. Tengo que restringirlos de tal manera que la fecha de inicio debe ser anterior a la fecha de finalización. La validación parece fallar cuando introduzco una fecha descriptiva, como a continuación:Asp.net compare el validador para validar la fecha

StartDate: Tuesday, 21 February 2012 

FinishDate: Wednesday, 22 February 2012 

A pesar de que 22 es mayor que 21 no pasa la validación. El marcado que utilicé está debajo. Si por alguna razón necesita formatear información, aquí está 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"> 
+0

Hey ¿Está utilizando un solo comparar validador de dos cuadros de texto? – JayOnDotNet

+0

@JayaPrakashRokkam Sí, es suficiente. De cualquier manera, la validación va a suceder – Deeptechtons

Respuesta

27

Pruebe este enfoque, antes introduce la fecha de inicio y comprobar el validador Comparar con la fecha de finalización de texto:

<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> 
+2

+1 para la mejor solución. Si tengo otra cuenta, +1 por la simplicidad. Buen trabajo. –

0

Validator personalizada Probar y en el código detrás en el evento OnServerValidate convertir el texto en DateTime y luego hacer la comparación.

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

validador personalizado es mi último recurso. Sé cómo utilizar todos estos validadores. Solo quería saber si los validadores de comparación admiten solo las fechas del formato 'm/d/y' – Deeptechtons

4

Comparar validador tiene el tipo = date.But ese tipo fecha se ve obligado a aceptar único formato de fecha particular, es decir, ToShortDateString(). Si el formato de fecha de los dos cuadros de texto para comparar está en otro formato como ToLongDateString() o en algún formato especificado por ToString ("dd MMMM, yyyy"), la comparación no funciona. CustomValidator isonly option. Si desea utilizar comparar validador sólo entonces

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> 
0
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); 
} 
} 
Cuestiones relacionadas