将值从 aspx 页面传递到其用户控件
Passing value from aspx page to its user control
我正在尝试将值从我的 aspx 页面传递到 ascx(用户控件)。所以,我在用户控件中创建了一个 属性 并在页面的页面加载时初始化它,当我调试它时,我看到 属性 在 aspx 页面的页面加载中分配但在用户控件中它是空的。
页面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 我的用户控件(此用户控件用于我的 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**
}
您不应在页面的 Page_Load
方法中将新的用户控件初始化为局部变量。相反,如果您想动态添加它,您应该使用 Page.LoadControl("UserControlName.ascx")
。否则,如果它位于页面顶部,您可以直接访问它;如果它位于像 GridViewRow
.
这样的子控件中,则可以通过 control.FindControl("UserControlID")
访问它
因此,如果以声明方式添加(在 aspx 代码上),这应该有效:
userControlID.PageTitle = Id;
但请注意,所有变量或控件都在页面生命周期结束时处理。您需要一种 persist them across postbacks 的方法,否则 PageTitle
在下一次回发时为空。您可以使用像 Label
、TextBox
、Hiddenfield
或 ViewState
/Session
.
这样的控件
我正在尝试将值从我的 aspx 页面传递到 ascx(用户控件)。所以,我在用户控件中创建了一个 属性 并在页面的页面加载时初始化它,当我调试它时,我看到 属性 在 aspx 页面的页面加载中分配但在用户控件中它是空的。
页面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 我的用户控件(此用户控件用于我的 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**
}
您不应在页面的 Page_Load
方法中将新的用户控件初始化为局部变量。相反,如果您想动态添加它,您应该使用 Page.LoadControl("UserControlName.ascx")
。否则,如果它位于页面顶部,您可以直接访问它;如果它位于像 GridViewRow
.
control.FindControl("UserControlID")
访问它
因此,如果以声明方式添加(在 aspx 代码上),这应该有效:
userControlID.PageTitle = Id;
但请注意,所有变量或控件都在页面生命周期结束时处理。您需要一种 persist them across postbacks 的方法,否则 PageTitle
在下一次回发时为空。您可以使用像 Label
、TextBox
、Hiddenfield
或 ViewState
/Session
.