CompareValidator Сравнить с текстовыми полями с датами
Мой валидатор сравнения всегда срабатывает, даже если он больше и даже меньше.
<tr>
<td>
Selection Start Date:
</td>
<td>
<asp:TextBox ID="SelectionStartDateTextBox" runat="server"
Text='<%# Bind("SelectionStartDate") %>'></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="RequFilesStart"
ControlToValidate="SelectionStartDateTextBox"
ErrorMessage="Enter Selection Start date!" ValidationGroup="validation1">
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
Selection End Date:
</td>
<td>
<asp:TextBox ID="SelectionEndDateTextBox" runat="server"
Text='<%# Bind("SelectionEndDate") %>'></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="ReqFiledEnd"
ControlToValidate="SelectionEndDateTextBox"
ErrorMessage="Enter Selection End date!" ValidationGroup="validation1">
</asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValSelDate" runat="server"
ControlToValidate="SelectionEndDateTextBox"
ControlToCompare="SelectionStartDateTextBox"
CultureInvariantValues="true" Type="Date"
Operator="LessThanEqual" ValidationGroup="validation1"
ErrorMessage="Selection End Date should be greater then Selected start date"
Display="dynamic">
</asp:CompareValidator>
</td>
</tr>
Я также установил его в Culture="en-GB" и также настроил в своей веб-конфигурации. Я использую набор инструментов Ajax для отображения календаря, прикрепленного к TextBox
<cc1:calendarextender id="Calendarextendera3" runat="server" format="dd MMM yyyy"
targetcontrolid="SelectionEndDateTextBox">
</cc1:calendarextender>
<cc1:calendarextender id="Calendarextendera4" runat="server" format="dd MMM yyyy"
targetcontrolid="SelectionStartDateTextBox">
</cc1:calendarextender>
Пожалуйста, помогите, я не знаю, что делать.
заранее спасибо
1 ответ
Решение
Вы должны установить
CultureInvariantValues="false"
в вашем CompareValidator. Кроме того, формат даты должен соответствовать вашей нынешней культуре. Похоже, что CompareValidator не может сравнивать формат дд МММ гггг. Если вы хотите отобразить этот формат, вы можете использовать специальный валидатор для сравнения дат:
<asp:CustomValidator runat="server" ID="datesValidator" OnServerValidate="DatesValidator_Validate" ErrorMessage="end date should be greater than or equal to start date"></asp:CustomValidator>
protected void DatesValidator_Validate(object source, ServerValidateEventArgs args)
{
DateTime startDate = Convert.ToDateTime(SelectionStartDateTextBox.Text);
DateTime endDate = Convert.ToDateTime(SelectionEndDateTextBox.Text);
if (endDate < startDate)
{
args.IsValid = false;
}
}