2014-09-17 3 views
0

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

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

+0

вы можете использовать RangeValidator –

ответ

0

Вместо того, чтобы сравнить валидатор, использование диапазона валидатор

**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!"; 

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

+0

Это показывает сообщение об ошибке, даже если дата больше текущей даты. Отображение ошибки при любом выборе. Это из-за формата, который я использую. dd-mmm-yyyy – user2831167

+0

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

1

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

<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; 
+0

Это не сработало для меня. Я выбираю дату с помощью AJAX Calender Extender. Поэтому, когда я выбираю дату меньше сегодня, она показывает ошибку, но если я выберу дату после этого месяца, она покажет ошибку, где она не должна отображаться. – user2831167