- Лучший способ связи между 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";