Как получить переменные из .ascx в другой .ascx? - PullRequest
3 голосов
/ 18 августа 2011

У меня есть два файла .ascx, один загружается в заполнитель в другом элементе управления .ascx.

Итак, у меня есть:

ParentControl

-> ChildControl

Я хочу получить доступ к ParentControl из ChildControl для получения переменных данных.

Пока у меня есть:

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 возвращает ноль.

Дайте мне знать, если вам нужна дополнительная информация.

ОБНОВЛЕНИЕ ОТВЕТА:

Я решил решить эту проблему, обойдя ее:

В родительском классе я вызываю функцию, определенную в дочернем классе, и анализирую значения Iнужно через.

ParentClass.ascx

protected void Page_Load
{
 ControlIWantToGetInformationTo.SetInfo(info);
}

ChildClass.ascx

public void SetInfo(Info info)
{
 string someString = info.TheVariableWithin;
}

Несколько пользователей упомянулииспользуя фрагмент кода,

this.parent;

, но так как я использую cms sitecore, this.parent возвращает нежелательное значение, поскольку страница не является физической после запуска sitecore.

Спасибо всемпомощь рад, что мне удалось справиться с проблемой:).

Ответы [ 3 ]

3 голосов
/ 18 августа 2011

Чтобы получить доступ к родительскому элементу управления в вашем дочернем классе, используйте свойство "Parent" класс вашего ребенка:

protected void Page_Load(object sender, EventArgs e)
{
  ParentControl page = (ParentControl)this.Parent;

  if(page != null)  
    string newVariable = page.GetFunction();
}

Надеюсь, это поможет.

2 голосов
/ 19 августа 2011

Мне удалось решить эту проблему, обойдя ее:

В родительском классе я вызываю функцию, определенную в дочернем классе, и анализирую нужные мне значения.

ParentClass.ascx

protected void Page_Load {  

   ControlIWantToGetInformationTo.SetInfo(info); 
} 

ChildClass.ascx

public void SetInfo(Info info) 
{  string someString = info.TheVariableWithin; } 

Несколько пользователей упоминали, что использовали фрагмент кода,

this.parent; 

но поскольку я использую cms sitecore, this.parent возвращает нежелательное значение, поскольку страница не является физической после запуска через sitecore.

Спасибо за всю помощь, рад, что мне удалось решить эту проблему:).

1 голос
/ 18 августа 2011

Создание нового родительского элемента управления не даст вам доступ к текущим настройкам родительского элемента управления.

Вы можете добавить свойство родительской страницы в свой пользовательский элемент управления и заполнить его при создании дочернего элемента управления. У вашего контроля нет this.Parent?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...