我有一系列嵌套在需要验证的 ajaxToolkit:TabContainer 中的用户控件。用户控件有一个 txtFlightFrom 和一个 txtFlightTo 控件,如果 txtFlightFrom 中有数据,我需要确保它们是 txtFlightTo 中的数据(如果没有目的地机场,你不能飞出一个机场)。我第一次尝试使用 asp:CompareValidator 控件,但我真正的问题是当我进入下一个选项卡时如何触发验证器。我尝试从我的 aspx 页面执行此操作,但这只会导致问题并且在逻辑上对我来说没有意义。
ascx:
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtFlightFrom" ControlToCompare="txtFlightTo" Type="String" ErrorMessage="CompareValidator" />
<asp:Label ID="lblCompareTOFROM" runat="server" />
<asp:TextBox ID="txtFlightFrom" runat="server" />
<asp:TextBox ID="txtFlightTo" runat="server" />
aspx:
<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" AutoPostBack="true" OnActiveTabChanged="TabContainer1_ActiveTabChanged">
<ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="Flights">
<ContentTemplate>
<ucFlight:FlightControl id="FlightControl1" Runat="server" />
<ucFlight:FlightControl id="FlightControl2" Runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="Cars">
stuff
</ajaxToolkit:TabPanel>
ascx.cs
public string ValidateToFrom
{
get { return lblCompareTOFROM.Text; }
set { lblCompareTOFROM.Text = value; }
}
aspx.cs
if (Page.IsValid)
{
FlightControl1.ValidateToFrom = "Not Valid";
}
我也在 ascx.cs 中尝试了此代码的变体,但这也没有意义,因为事件发生在 ascx.cs
有什么想法吗?