Получите доступ к значению текстового поля в заголовке главной страницы на странице .aspx.vb - PullRequest
0 голосов
/ 29 февраля 2012

Я создал текстовое поле и кнопку отправки в заголовке (элемент управления пользователя), включенные в главную страницу

и я хочу использовать это значение текстового поля после нажатия кнопки «Отправить» на моей странице .aspx.vb.

Как я могу получить к этому доступ, поскольку сначала загружается страница vb, а затем загружается главная страница?

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

TextBox Val = (TextBox) this.Master.FindControl ("TextBoxID");

0 голосов
/ 29 февраля 2012
  • Лучший способ связи между UserControl и Page / MasterPage - использовать события
  • Лучший способ общения с MasterPage на Page - это использование событий

Таким образом, вы не жестко связываете пользовательские элементы управления с их страницами / мастер-страницами и страницу с ее мастером.

Добавьте в свой UserControl событие, которое возникает, когда пользователь нажимает кнопку, например:

В UserControl типа MyControl:

public delegate void SubmittedHandler(MyControl ctrl);
public event SubmittedHandler Submitted;

protected void BtnCLick(object sender, EventArgs e) {
    Submitted(this);
}

Затем добавьте обработчик к этому событию в вашей MasterPage, обработайте его и снова вызовите событие мастера:

В коде Учителя позади:

public delegate void MyControlSubmittedHandler(MyControl ctrl);
public event MyControlSubmittedHandler ControlSubmitted;

protected void Page_Init(Object sender, EventArgs e) {
    this.MyControl1.Submitted += MyControlSubmitted;
}

protected void MyControlSubmitted(MyControl sender) {
    ControlSubmitted(sender);
}

Затем добавьте обработчик этого события на свою страницу:

На вашей странице:

protected void Page_Init(object sender, EventArgs e) {
    ((SiteMaster)Master).ControlSubmitted += MasterControlSubmitted;
}

protected void MasterControlSubmitted(MyControl sender){
    // do whatever you need to do
}

Если вам нужен только доступ к TextBox со страницы и вам не нужно обрабатывать событие click, вы также можете использовать свойства для достижения этого:

  • добавить публичную собственность f.e. MyControlText в ваших UserControl, которые получают / устанавливают свойство TextBox.Text
  • добавить публичную собственность f.e. MyControlText в вашем Master, который получает / устанавливает свойство MyControlText вашего UserControl
  • Теперь вы можете получить / установить это свойство со своей страницы следующим образом: ((SiteMaster)Master).MyControlText = "Hello World";
...