Asp.net 用户控制条件验证方法?

Asp.net 用户控制条件验证方法?,asp.net,validation,architecture,page-lifecycle,Asp.net,Validation,Architecture,Page Lifecycle,我有一个自定义UserControl,它包含几个带有验证器的文本框。根据复选框,带有相应验证器的文本框是可选的。伪: 我的控件。ascx: <asp:TextBox id="txtAddress" /> <asp:Validator id="valAddress" /> <asp:CheckBox id="condition" /> <asp:TextBox id="txtConditional" /> <asp:Validator id=

我有一个自定义UserControl,它包含几个带有验证器的文本框。根据复选框,带有相应验证器的文本框是可选的。伪:

我的控件。ascx

<asp:TextBox id="txtAddress" />
<asp:Validator id="valAddress" />

<asp:CheckBox id="condition" />
<asp:TextBox id="txtConditional" />
<asp:Validator id="valConditional" ValidationGroup="ConditionalGroup" />
我还有一个页面基本上是这样的:

Page.aspx

<my:Control id="myControl" />

<asp:Button onClick="doPost" />
这一切都是可行的,但是我想将
myControl.Validate()
行从
Page.aspx.cs
中取出,并将其放入
My Control.ascx.cs
中。将其放入控件的
页面\u Load
不是一个选项,因为
条件
复选框值始终为
false
。在
Page\u Load
之后和之前,
doPost
单击处理程序被触发后,没有可用的事件


调用
页面
上的自定义
验证
函数感觉不对,我认为它应该属于
用户控件
的某个地方。这真的是架构上的错误吗?是否有其他解决方案可以通过使用事件处理程序来解决此问题?

只有在用户选中复选框时,才可以启用验证器。如果取消选中,则禁用验证程序。这必须在用户控件中完成。它可以在客户端或服务器端完成。这样,页面将验证为页面启用的所有验证器。

子控件上的事件在页面之后执行(初始化阶段除外)。因此,控件的page_load事件在页面的page_load之后,在页面的控件事件(例如doPost)之前。注意:这对您的具体问题没有帮助。
<my:Control id="myControl" />

<asp:Button onClick="doPost" />
protected void doPost(object sender, EventArgs e) {
    myControl.Validate(); //This feels wrong

    if(Page.IsValid) {
        //go
    }
}