我正在尝试将值从我的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**
}
答案 0 :(得分:0)
您不应在页面的Page_Load
方法中将新的usercontrol初始化为本地变量。相反,如果要动态添加,请使用Page.LoadControl("UserControlName.ascx")
。否则,如果它位于页面顶部,您可以直接访问它;如果它位于control.FindControl("UserControlID")
之类的子控件中,则可以通过GridViewRow
访问它。
因此,如果以声明方式添加(在aspx代码上),这应该有效:
userControlID.PageTitle = Id;
但请注意,所有变量或控件都放置在页面生命周期的末尾。您需要一种方法persist them across postbacks,否则PageTitle
在下一次回发时为空。您可以使用Label
,TextBox
,Hiddenfield
或ViewState
/ Session
等控件。