Richiamare un metodo della pagina genitore da uno User Control

di: Gianni Marzaloni     08 Luglio 2005

In questo piccolo articolo, vi illustrerò come richiamare una funzione della pagina ASPX da uno User Control contenuto in essa. Non è una prassi molto comune, solitamente ci si trova davanti situazioni inverse, dove dalla pagina ASPX è necessario richiamare un metodo o una proprietà del controllo figlio. In questo caso basta semplicemente dichiarare come Public il metodo o la proprietà in oggetto e richiamare il controllo tramite il nome assegnatogli in fase di dichiarazione.

A volte però ci si può trovare di fronte ad una situazione differente. Può capitare di dover richiamare un metodo della pagina ASPX direttamente dallo User Control contenuto al suo interno. Esistono alcune soluzioni semplici e veloci (utilizzare le sessioni o i cookie ad esempio) ma tutte queste hanno un piccolo difetto: vengono eseguite dopo il caricamento del controllo. Ciò vuol dire che, se ad esempio settiamo una variabile di sessione pippo a 1, avremo a disposizione il valore 1 esclusivamente dopo, in modo sequenziale, alla lettura, da parte del compilatore, della riga nella sezione HTML dove è presente il controllo. Se siete stati fortunati fin d'ora, potreste aver adottato questa soluzione e risolvere il vostro piccolo problema, altrimenti se questo metodo d'azione è per voi diventato quasi un dilemma, vi consiglio di continuare con la lettura...

Come esempio, costruirò una pagina ASPX contenente uno User Control che a sua volta conterrà un bottone. Vogliamo far sì che lo User Control possa eseguire un metodo presente nella pagina ASPX.

Partiamo con lo scrivere il codice per lo User Control:

<%@ Control Language="C#" %>
<script runat="server">
// dichiaro l'handler degli eventi pubblico
public event EventHandler ButtonClick;
protected void OnUserControlClick(EventArgs e) {
// metodo sostitutivo dell'evento Click del bottone
// qui rimando l'evento Click all'EventHandler del controllo
if ( ButtonClick != null ) {
ButtonClick(this, e);
}
}
void btnClick_Click(object sender, EventArgs e) {
// aggiungo l'evento Click del bottone all'handler degli eventi
OnUserControlClick(e);
}
</script>
<!-- bottone di esempio -->
<asp:Button id="btnClick"
  onclick="btnClick_Click"
  Text="Clicca qui"
  runat="server"
  />

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto