C# 将值从aspx页传递到其用户控件

C# 将值从aspx页传递到其用户控件,c#,asp.net,user-controls,C#,Asp.net,User Controls,我正在尝试将值从我的aspx页面传递到ascx(用户控件)。因此,我在用户控件中创建了一个属性,并在页面的页面加载时对其进行初始化,当我调试它时,我看到该属性在aspx页面的页面加载中被分配,但在用户控件中它为null 页面aspx页面: private string _id; public string Id { get { return _id; } set { _id = value; }

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

页面aspx页面:

        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 My usercontrol(此用户控件用于My Pageaspx.aspx)


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

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

userControlID.PageTitle = Id;
但请注意,所有变量或控件都是在页面生命周期结束时处理的。您需要一种方法,否则
PageTitle
在下一次回发时为空。您可以使用诸如
标签
文本框
隐藏字段
视图状态
/
会话等控件

userControlID.PageTitle = Id;