基于实例从MSDN进入,我想验证代码隐藏的日期范围,使用RangeValidator控件Button.Click事件将不触发时文本RangeValidator.ControlToValidate
有三个文本框,一个用于抵达日期,出发日期和期望的游览日期。点击提交按钮后,如果用户在其他两个文本框中指定的范围之外输入了所需的巡视日期,则会出现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;
}
}
编辑:感谢您的回答,但事实证明,我没有在RangeValidator控件的EnableClientScript属性设置为“假”。新规则 - 我将等待30分钟,然后再提问:)
@dbr:之前的任何在[页面生命周期]代码隐藏事件发生JavaScript验证(http://msdn.microsoft.com/en-us/library/ms178472。 aspx) – abatishchev