在基页上使用“FindControl”

时间:2011-09-27 19:07:15

标签: c# asp.net validation

我的页面,Default.aspx继承了BasePage.cs格式。

在基页中,我试图找到实际位于Default.aspx中的控件Label1。

var labelControl = (TextBox)Page.FindControl("Label1");

然而,这总是回归为空。我可以通过基页找到其他页面的控件吗?

3 个答案:

答案 0 :(得分:4)

FindControl不是递归的(ASP.NET团队由于性能原因尚未实现它)。

答案 1 :(得分:1)

如果FindControl()没有结束工作,应该可以通过将控件声明为BasePage类中的属性来实现。假设Default.aspx和其他.aspx页面都将继承自BasePage,您应该能够这样做:

public class BasePage
{
  protected Label Label1;

}

在BasePage方法中,检查您的属性是否为空。如果是,则控件存在并可以操作:

protected void SomeBasePageMethod()
{
  if (this.Label1 != null) 
  {
    // Do something with Label1
  }
}

答案 2 :(得分:0)

设置Label&的ClientIDMode。然后尝试在BasePage.cs中找到标签

 protected override void OnLoad(EventArgs e)
{
    Label lbl = this.FindControl("Label1") as Label;


}

希望这会有所帮助。