我试图将值从我的aspx页传递到ascx(用户控件)。因此,我在用户控件中创建了一个属性,并在页面的页面加载时对其进行了初始化,当我对其进行调试时,我看到该属性在aspx页面的页面加载中分配了,但是在用户控件中,该属性为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我的用户控件(在我的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
页面的方法中将新的usercontrol初始化为局部变量。相反,Page.LoadControl("UserControlName.ascx")
如果要动态添加,则应使用。否则,如果它位于页面顶部,则可以直接访问它;或者如果它位于control.FindControl("UserControlID")
诸如的子控件中,则可以通过它进行访问GridViewRow
。
因此,如果以声明方式(在aspx代码上)添加了它,那么它应该可以工作:
userControlID.PageTitle = Id;
但是请注意,所有变量或控件都在页面生命周期的末尾处理。您需要一种在回发之间保留它们的方法,否则PageTitle
在下一个回发中为null。你可以使用像控制Label
,TextBox
,Hiddenfield
或ViewState
/ Session
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句