Asp.net сравнить валидатор, чтобы проверить дату - PullRequest
9 голосов
/ 21 февраля 2012

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

StartDate: Tuesday, 21 February 2012

FinishDate: Wednesday, 22 February 2012

Даже если 22-е больше, чем 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">

Ответы [ 4 ]

27 голосов
/ 21 февраля 2012

Попробуйте этот подход. Сначала введите «Дата начала» и проверьте «Сравнить валидатор» с текстовым полем «Дата окончания»:

<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>
4 голосов
/ 08 августа 2012

Верификатор сравнения имеет тип = date. Но этот тип даты ограничен, чтобы принимать только определенный формат даты, т.е. 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 голосов
/ 12 ноября 2015
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);
}
}
0 голосов
/ 21 февраля 2012

Попробуйте пользовательский Validator и в коде события onservervalidate преобразуйте текст в DateTime, а затем выполните сравнение.

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