动态加载用户控件的问题

时间:2014-06-10 12:37:28

标签: asp.net user-controls

我在页面上动态加载用户控件,工作正常。但是我遇到了一个问题:

  • 我在User Control代码隐藏中有一个类级变量,并且在User Control Page Load中分配了相同的值。现在当我单击我的aspx页面上包含用户控件的按钮并尝试从中调用用户控件功能时,我看到我在用户控件页面加载中设置的变量值已被重置。

如果我在设计时拥有用户控件,则相同的代码可以正常工作。

代码是这样的:

页:

    MyUserControl cntrl = Page.LoadControl("~/MyUserControl.ascx")
    btn_click(){
    {
      cntrl.TestFunction();
    }

用户控制:

    class MyUserControl: UserControl
    {
       //Variable
       string org="";
       Page_Load()
       {
          org="test";
       }

       TestFunction()
       {
          //The value of org variable is empty here.
          //It should however be "test" which i have set in page_load
       }
   }

1 个答案:

答案 0 :(得分:1)

"代码是这样的:" - 在提供代码(甚至是片段)时,尝试使其符合语言语法 - 在本例中为C#。

为了激活MyUserControl.Page_Load,您必须将用户控件添加到页面的控制树中:

MyUserControl cntrl = (MyUserControl)Page.LoadControl("~/MyUserControl.ascx");
Panel1.Controls.Add(cntrl);

Page_Load方法必须具有非常特定的签名和范围:

class MyUserControl: UserControl
{
  string org="";

  protected void Page_Load(object sender, EventArgs e)
  {
    org="test";
  }

}