Основываясь на примере из MSDN , я пытаюсь проверить диапазон дат в выделенном коде, используя RangeValidator
Существует три текстовых поля, по одному на дату прибытия, отъездадата и желаемая дата тура.После нажатия кнопки отправки, если пользователь вводит желаемую дату тура за пределами диапазона, указанного в двух других текстовых окнах, должно появиться сообщение RangeValidator.
Минимальные и максимальные значения RangeValidator устанавливаются в событии Click кнопки,Его ControlToValidate (желаемая дата тура) устанавливается в разметке.
Проблема в том, что событие Click кнопки отправки не срабатывает, если в любом из первых двух текстовых полей есть текст.Если текст вводится в любой другой комбинации, событие запускается (хотя, очевидно, генерируется исключение).
Разметка:
Arrival date:
<br />
<asp:TextBox ID="txtArrival" runat="server"></asp:TextBox>
<br />
Departure date:
<br />
<asp:TextBox ID="txtDeparture" runat="server"></asp:TextBox>
<br />
Tour date:
<br />
<asp:TextBox ID="txtTourDate" runat="server"></asp:TextBox>
<br />
<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtTourDate"></asp:RangeValidator>
<br />
<asp:Button ID="btnSubmit" runat="server" Text="submit" onclick="btnSubmit_Click"/>
Кодовый код ::
protected void btnSubmit_Click(object sender, EventArgs e)
{
RangeValidator1.MinimumValue = txtArrival.Text;
RangeValidator1.MaximumValue = txtDeparture.Text;
RangeValidator1.Type = ValidationDataType.Date;
RangeValidator1.Validate();
if (!RangeValidator1.IsValid)
{
RangeValidator1.ErrorMessage = "The tour date must fall between " + txtArrival.Text + " and " + txtDeparture.Text;
}
}
Редактировать: Спасибо за ответ, но оказалось, что я не установил атрибут EnableClientScript RangeValidator в "false".Новое правило - я подожду 30 минут, прежде чем снова задавать вопросы:)