我有一个自定义的用户控件,它包含几个带有验证器的文本框。基于CheckBox,具有相应Validator的一个TextBox是可选的。伪:UserControl有条件的验证方法?
我Control.ascx:
<asp:TextBox id="txtAddress" />
<asp:Validator id="valAddress" />
<asp:CheckBox id="condition" />
<asp:TextBox id="txtConditional" />
<asp:Validator id="valConditional" ValidationGroup="ConditionalGroup" />
我Control.ascx.cs
public void Validate() {
if(condition.Checked) {
Page.Validate("ConditionalGroup");
}
}
我也有一个网页,其中基本上是这样的:
Page.aspx
<my:Control id="myControl" />
<asp:Button onClick="doPost" />
Page.aspx.cs
protected void doPost(object sender, EventArgs e) {
myControl.Validate(); //This feels wrong
if(Page.IsValid) {
//go
}
}
这一切工作,但我想采取myControl.Validate()
线出Page.aspx.cs
,并把它放在My Control.ascx.cs
。将它放在控件的Page_Load
不是一个选项,因为conditional
复选框值始终为false
。没有可用事件之后Page_Load
和前doPost
单击处理程序被激发......
感到不对劲来调用自定义Validate
功能上Page
,我认为它应该在的地方的UserControl
归属。这是否在架构上是错误的?有没有另一种解决方案可能通过使用事件处理程序?
子页面上的事件在页面后执行(例外是初始化阶段)。因此,控件的page_load事件位于页面的page_load之后和页面的控件事件之前(例如doPost)。注意:这不能帮助你解决你的具体问题。 – rkw 2012-03-07 09:46:26
结帐:[如何验证UserControl?](http://izlooite.blogspot.com/2010/07/how-to-validate-user-control.html) – 2012-04-05 05:54:43