Сравните Validator для проверки даты

Ниже приведен код, который я использую для выбора даты в asp.net.

Я использую текстовое поле для отображения даты и изображения, чтобы показать значок календаря, и расширитель календаря Ajax, чтобы выбрать дату в формате dd-mmm-yyyy.

<asp:TextBox ID="txtReqCompDate" runat="server"
    ToolTip="Select Analysis Required Date" CssClass="formtext"
    CausesValidation="True">
</asp:TextBox>
<asp:ImageButton ID="ibReqCompletionDate" runat="server"
    ImageUrl="~/Images/Calendar.png" ImageAlign="AbsBottom" Height="15px" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
    ControlToValidate="txtReqCompDate" Display="Dynamic" Text="Required"
    ErrorMessage="Analysis Required Date" ValidationGroup="valProjForm"
    SetFocusOnError="True" Font-Size="Smaller">
</asp:RequiredFieldValidator>
<asp:CompareValidator runat="server" ID="cmp1"
    ErrorMessage="The date must be greater than todays date"
    ControlToValidate="txtReqCompDate" Type="Date" Operator="GreaterThan" />
<cc1:CalendarExtender ID="CalendarExtender1" runat="server"
    PopupButtonID="ibReqCompletionDate"
    TargetControlID="txtReqCompDate" Format="dd-MMM-yyyy" Enabled="True">
</cc1:CalendarExtender>

Даже если я использую эту строку при загрузке страницы, это бесполезно.

cmp1.ValueToCompare = DateTime.Now.ToShortDateString();

Пожалуйста, предложите мне способ сразу же отобразить сообщение, когда кто-то выбирает дату меньше, чем сегодняшняя дата, используя comparevalidator.

Мне нужна аналогичная функциональность на нескольких страницах моего сайта. А также на той же странице выбрать дату больше, чем txtReqCompDate.

Или, пожалуйста, предложите мне способ отключить предыдущие даты в ajax calenderextender и показать дату перед текущей датой в расширителе Ajax, не влияя на мою текущую функциональность кода, поскольку я кодирую в .net 2.0.

Моя основная проблема здесь, она показывает проверку, если дата меньше сегодняшней даты и даже когда дата больше текущей даты. Всегда показывает сообщение об ошибке, независимо от того, какой валидатор я использую, сравниваю или ранжирую


person user2831167    schedule 17.09.2014    source источник
comment
вы можете использовать RangeValidator   -  person V2Solutions - MS Team    schedule 17.09.2014


Ответы (2)


Установите Type в String вашего CompareValidator, а затем в коде позади получите дату и отформатируйте ее в string в соответствии с вашим требованием (то есть "dd-MMM-yy") "С учетом регистра". Я проверил этот код, введя дату вручную, и это сработало.

<asp:CompareValidator runat="server" ID="cmp1"
ErrorMessage="The date must be greater than todays date"
ControlToValidate="txtReqCompDate" Type="String" Operator="GreaterThan" />

Код:

string date = DateTime.Now.ToString("dd-MMM-yy");
cmp1.ValueToCompare = date;
person Syed Ali Taqi    schedule 17.09.2014
comment
Это не сработало для меня. Я выбираю дату с помощью AJAX Calender Extender. Поэтому, когда я выбираю дату меньше сегодня, она показывает ошибку, но если я выбираю дату после этого месяца, она показывает ошибку там, где она не должна отображаться. - person user2831167; 18.09.2014

Вместо валидатора сравнения используйте валидатор диапазона

 **In html**  

 <asp:RangeValidator ID="RangeValidator1" runat="server">  
    </asp:RangeValidator>  

 **C#**
     RangeValidator1.ControlToValidate = "txtReqCompDate";  
     RangeValidator1.Type = ValidationDataType.Date;  
     RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString();  
     RangeValidator1.MaximumValue = DateTime.Now.AddDays(7).ToShortDateString();  
     RangeValidator1.ErrorMessage = "Select date between today to next 7 days!";  

Вы можете изменить его в соответствии с вашими требованиями.

person Manu    schedule 17.09.2014
comment
Он показывает сообщение об ошибке, даже если дата больше текущей даты. Отображение ошибки при любом выборе. Это из-за формата, который я использую. дд-ммм-гггг - person user2831167; 17.09.2014
comment
Почему бы вам не попробовать это в javascript без использования какой-либо проверки, а просто предупреждение, если пользователь вводит дату меньше, чем сегодняшняя дата - person Manu; 17.09.2014