如何在另一个.ascx中从.ascx获取变量?

时间:2011-08-18 17:03:07

标签: c# .net asp.net variables

我有两个.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运行,该页面就不是物理的。

感谢所有帮助,我设法解决了这个问题:)。

3 个答案:

答案 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吗?