2012-02-21 3 views
9

Как вы все знаете. Валидаторы могут использоваться для проверки дат и проверки на основе типа оператора (<, < =,> = и т. Д.). Я установил свойство cultureinvariantvalues="true" для проверки двух элементов управления текстовыми полями, которые содержат даты. Я должен ограничить их таким образом, чтобы дата начала была раньше даты окончания. Проверка, кажется, не в состоянии, когда я введите описательную дату, как показано ниже:Asp.net сравнить валидатор для подтверждения даты

StartDate: Tuesday, 21 February 2012 

FinishDate: Wednesday, 22 February 2012 

Несмотря на то, двадцать втором больше, чем 21 проверка терпит неудачу. Разметка, которую я использовал, приведен ниже. Если по какой-то причине вам нужно форматировать данные, здесь 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

эй вы используете одного сравнение валидатора для двух текстовых полей? – JayOnDotNet

+0

@JayaPrakashRokkam Yup достаточно. В любом случае валидация произойдет – Deeptechtons

ответ

27

Попробуйте этот подход, сначала введите дату начала и Проверяйте Сравнить валидатор с датой окончания текстового полем:

<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 для лучшего решения. Если у меня есть другая учетная запись, +1 для простоты. Отличная работа. –

0

Try валидатора и в коде позади в onservervalidate случае преобразовать текст в DateTime, а затем сделать Comparision.

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

пользовательский валидатор - мое последнее средство. Я знаю, как использовать все эти валидаторы, я просто хотел узнать, поддерживают ли валидаторы сравнения только даты формата «m/d/y» – Deeptechtons

4

Compare валидатор имеет тип = date.But, что тип даты ограничивается принять только конкретный формат даты, то есть ToShortDateString(). Если формат даты для двух текстовых полей, которые нужно сравнить, находится в другом формате, таком как ToLongDateString() или в некотором формате, указанном ToString ("dd MMMM, yyyy"), сравнение не работает. CustomValidator - только опция. Если вы хотите использовать сравнение валидатора только тогда

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); 
} 
} 
Смежные вопросы