基於實例從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