Condividi tramite


Procedura: creare gestori eventi nelle pagine Web ASP.NET (Visual Studio)

Aggiornamento: novembre 2007

Quando viene modificata una pagina Web ASP.NET in Visual Studio, è possibile creare i gestori di eventi server per i controlli e per la pagina in diversi modi. Alcuni di questi dipendono dal linguaggio di programmazione utilizzato. È possibile creare gestori utilizzando le funzionalità di Visual Web Developer oppure è possibile crearli in modo dichiarativo o tramite codice.

Nota:

È anche possibile aggiungere eventi per script client, che vengono eseguiti durante l'esecuzione del controllo nel browser come elemento della pagina. Per informazioni, vedere Procedura: aggiungere eventi di script client ai controlli server Web ASP.NET.

In genere, se un controllo supporta più eventi, viene configurato in modo che uno di essi sia quello predefinito. Ad esempio, per il controllo Button, l'evento predefinito è Click.

Creazione di gestori di eventi in Visual Web Developer

Per creare un gestore di eventi per un evento predefinito

  • Nella visualizzazione Progettazione, fare doppio clic sulla pagina o sul controllo per il quale si desidera creare un gestore di eventi predefinito.

    Visual Web Developer crea un gestore per l'evento predefinito e apre l'editor di codice con il punto di inserimento nel gestore eventi.

Per creare un gestore eventi nella finestra Proprietà

  1. Nella visualizzazione Progettazione, selezionare il controllo per il quale si desidera creare un gestore eventi.

    Nota:

    Non è possibile selezionare la pagina nella visualizzazione Progettazione, pertanto non è possibile creare un evento a livello di pagina utilizzando questa procedura. Utilizzare la procedura precedente.

  2. In Proprietà, scegliere il simbolo degli eventi .

    Nella finestra Proprietà viene visualizzato un elenco di eventi per il controllo selezionato.

  3. Nella casella accanto al nome di un evento, eseguire una delle seguenti operazioni:

    • Fare doppio clic per creare un nuovo gestore di eventi per l'evento. Il nome del gestore viene definito dalla finestra di progettazione in base alla convenzione controlID_event.

    • Digitare il nome del gestore che si desidera creare.

    • Dall'elenco a discesa, selezionare il nome di un gestore esistente.

      Nell'elenco a discesa viene visualizzato un elenco di metodi che hanno la firma corretta per l'evento.

    Al termine, Visual Web Developer passerà all'editor di codice e immetterà i punti di inserimento nel gestore.

Per creare un gestore eventi nell'editor di codice

  1. Passare all'editor di codice utilizzando una delle seguenti tecniche:

    • Per una pagina Web a file singolo, passare alla visualizzazione Origine.

    • Per una pagina code-behind, in Esplora soluzioni, fare clic con il pulsante destro del mouse sul nome della pagina, quindi scegliere Visualizza codice.

      Nota:

      Questa tecnica non funziona nelle pagine code-behind che utilizzano C#, perché il nome del controllo non viene visualizzato nell'elenco a discesa nell'ultimo passaggio. Utilizzare un'altra procedura.

  2. Nella parte superiore della finestra dell'editor di codice, selezionare il controllo dall'elenco a discesa a sinistra, quindi selezionare l'evento dall'elenco a discesa a destra.

    Nota:

    Gli eventi per i quali esistono già metodi vengono visualizzati in grassetto.

Creazione di gestori eventi in modo dichiarativo

Quando viene utilizzato per creare un gestore, Visual Web Developer ne crea la struttura e configura il controllo per effettuare chiamate al gestore. È possibile eseguire le stesse operazioni senza utilizzare Visual Web Developer.

Per creare un gestore per gli eventi delle pagine

  • Nell'editor di codice, creare un metodo denominato Page_event.

    Ad esempio, per creare un gestore per l'evento Load della pagina, creare un metodo denominato Page_Load.

    Nota:

    Non è obbligatorio che i gestori degli eventi delle pagine abbiano gli stessi parametri degli altri gestori di eventi per i controlli.

    Le pagine ASP.NET associano automaticamente gli eventi delle pagine ai metodi Page_event. Questa associazione automatica viene configurata dall'attributo AutoEventWireup nella direttiva @ Page che, per impostazione predefinita, viene impostata su true. Se AutoEventWireup viene impostato su false, la pagina non cerca automaticamente i metodi che utilizzano la convenzione di denominazione Page_event.

    L'esempio di codice seguente mostra un gestore per l'evento Load della pagina.

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack Then
            Response.Write("<br>Page has been posted back.")
        End If
    End Sub
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Response.Write("<br>Page has been posted back.");
        }
    }
    

Per aggiungere un gestore per un controllo in modo dichiarativo

  1. Nell'editor di codice, creare un metodo di gestione degli eventi con la firma appropriata.

    È possibile assegnare un nome qualsiasi a questo metodo.

  2. Nel markup del controllo, utilizzare gli attributi denominati On<nome evento> per agganciare il gestore eventi. Utilizzare come valore il nome del metodo del gestore eventi.

    Nel seguente seguente esempio viene indicato il markup per un controllo TextBox per il quale l'evento TextChanged è stato associato al metodo del gestore eventi denominati NameChange:

    Nota sulla sicurezza:

    L'esempio include una casella di testo che accetta l'input dell'utente e rappresenta quindi una potenziale minaccia alla sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script.

    Protected Sub NameChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles textbox1.TextChanged
        'Sub for the OnTextChanged event
    End Sub
    
    <asp:TextBox ID="textbox1" Runat="server" 
    Text="" 
    OnTextChanged="NameChange" />
    
  3. Aggiungere il metodo dell'evento al codice. Ad esempio, il seguente esempio di codice mostra il codice relativo al metodo del gestore eventi denominato NameChange:

    protected void NameChange(object sender, EventArgs e)
    {
        //Method for the OnTextChanged event.
    }
    

Per aggiungere un gestore eventi in modo implicito in Visual Basic

  1. Nell'editor di codice, creare un metodo di gestione degli eventi con la firma appropriata.

    È possibile assegnare un nome qualsiasi a questo metodo.

  2. Utilizzare la parola chiave Handles, specificando il controllo e l'evento per l'associazione del metodo.

    Il seguente esempio di codice mostra un gestore per l'evento Click di un pulsante denominato SampleButton. Il metodo dell'esempio viene denominato Clicked.

    Protected Sub SampleButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
            Handles SampleButton.Click
        ' Code goes here.
    End Sub
    
    Nota:

    Se viene utilizzata la parola chiave Handles, non inserire l'attributo dell'evento nel markup del controllo. In caso contrario, il gestore viene chiamato due volte.

  3. Se il metodo gestisce più eventi, aggiungere i nome degli altri eventi alla clausola Handles, separati da una virgola.

    Nell'esempio di codice riportato di seguito viene illustrato un metodo per la gestione dell'evento Click per diversi pulsanti. Nel gestore, il codice prova l'argomento del mittente per stabilire quale sia stato il pulsante selezionato.

    Protected Sub AnyClicked(ByVal sender As Object, ByVal e As System.EventArgs) _
            Handles Button1.Click, Button2.Click, Button3.Click
        Dim b As Button = CType(sender, Button)
        Response.Write("You clicked the button labeled " & b.ID)
    End Sub
    

Vedere anche

Attività

Procedura: associare dinamicamente i gestori di eventi in fase di esecuzione nelle pagine Web ASP.NET

Concetti

Cenni preliminari sui controlli server Web ASP.NET

Altre risorse

Gestione e generazione di eventi

Gestione di eventi server in pagine Web ASP.NET