将值从aspx页面传递给其用户控件

时间:2015-03-18 14:46:48

标签: c# asp.net user-controls

我正在尝试将值从我的aspx页面传递给ascx(用户控件)。所以,我在用户控件中创建一个属性并在页面的页面加载时初始化它,当我调试它时,我看到该属性在aspx页面的页面加载中被分配,但在usercontrol中它变为null。

Pageaspx页面:

        private string _id;
        public string Id
        {
            get { return _id; }
            set { _id = value; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Id = "ASPX1";
            Pageascx g = new Pageascx();
            g.PageTitle = Id;
        }

Pageascx.ascx我的usercontrol(我的Pageaspx.aspx中使用了此用户控件)

          private string _pageTitle;
          public string PageTitle {get; set;}
          protected void Page_Load(object sender, EventArgs e)
          { 
            if (PageTitle == "ASCX1") // **Here, I get PageTitle = null**
          } 

1 个答案:

答案 0 :(得分:0)

您不应在页面的Page_Load方法中将新的usercontrol初始化为本地变量。相反,如果要动态添加,请使用Page.LoadControl("UserControlName.ascx")。否则,如果它位于页面顶部,您可以直接访问它;如果它位于control.FindControl("UserControlID")之类的子控件中,则可以通过GridViewRow访问它。

因此,如果以声明方式添加(在aspx代码上),这应该有效:

userControlID.PageTitle = Id;

但请注意,所有变量或控件都放置在页面生命周期的末尾。您需要一种方法persist them across postbacks,否则PageTitle在下一次回发时为空。您可以使用LabelTextBoxHiddenfieldViewState / Session等控件。