基于来自MSDN的示例,我正在尝试使用 RangeValidator 在代码隐藏中验证日期范围
共有三个文本框,一个用于到达日期、出发日期和所需的旅行日期。单击提交按钮后,如果用户在其他两个文本框中指定的范围之外输入了所需的游览日期,则应显示 RangeValidator 的消息。
RangeValidator 的最小值和最大值在按钮的 Click 事件中设置。其 ControlToValidate(所需的游览日期)在标记中设置。
问题是:如果前两个 TextBox 中的任何一个中有文本,则不会触发提交按钮的 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;
}
}
编辑:感谢您的回答,但事实证明我没有将 RangeValidator 的 EnableClientScript 属性设置为“false”。新规则 - 我要等 30 分钟再提问 :)