我有两个.ascx文件,一个被加载到另一个.ascx控件中的占位符中。
所以我有:
ParentControl
- >的 ChildControl
我想从ChildControl访问ParentControl以获取可变数据。
到目前为止,我有:
ParentControl.ascx
public UserList GetFunction
{
get
{
return someVariable;
}
}
在:
ChildControl.ascx
Protected void Page_Load(object sender, EventArgs e){
ParentControl page = new ParentControl;
string newVariable = page.GetFunction.someOtherVariable;
}
我在哪里出错,当我在父类中返回someVariable时,它具有我需要的内容,但当我尝试在ChildControl页面中获取它时.GetFunction返回null。
如果您需要更多信息,请与我们联系。
更新答案:
我已经通过解决这个问题来解决这个问题:
在父类中,我调用子类中定义的函数并解析我需要的值。
ParentClass.ascx
protected void Page_Load
{
ControlIWantToGetInformationTo.SetInfo(info);
}
ChildClass.ascx
public void SetInfo(Info info)
{
string someString = info.TheVariableWithin;
}
有几位用户提到使用这段代码,
this.parent;
但是因为我使用的是sitecore cms,所以this.parent会返回一个不需要的值,因为一旦通过sitecore运行,该页面就不是物理的。
感谢所有帮助,我设法解决了这个问题:)。
答案 0 :(得分:3)
要访问子类中的父控件,请使用属性“Parent” 你的孩子班:
protected void Page_Load(object sender, EventArgs e)
{
ParentControl page = (ParentControl)this.Parent;
if(page != null)
string newVariable = page.GetFunction();
}
希望,这有帮助。
答案 1 :(得分:2)
我已经通过解决这个问题来解决这个问题:
在父类中,我调用子类中定义的函数并解析我需要的值。
ParentClass.ascx
protected void Page_Load {
ControlIWantToGetInformationTo.SetInfo(info);
}
ChildClass.ascx
public void SetInfo(Info info)
{ string someString = info.TheVariableWithin; }
有几位用户提到使用这段代码,
this.parent;
但是因为我使用的是sitecore cms,所以this.parent会返回一个不需要的值,因为一旦通过sitecore运行,该页面就不是物理的。
感谢所有帮助,我设法解决了这个问题:)。
答案 2 :(得分:1)
创建新的父控件不会授予您访问当前控件父实例设置的权限。
您可以向用户控件添加父页面属性,并在创建子控件时填充它。 你的控件没有this.Parent吗?