2010-03-04 22 views
14

Nel mio sito Web ASP.Net ho un pulsante. Quando faccio clic sul pulsante e poi ricarico la pagina tramite browser, l'evento click del pulsante si attiva. C'è un problema, per favore aiutatemi.Perché in ASP.NET si verifica un evento di clic del pulsante quando viene aggiornata la pagina?

+3

Potremmo avere qualche informazione in più sul problema reale? Ricevi messaggi di errore? –

+0

Non è un problema. Quando ricarichi la pagina, tutte le azioni si ripresenteranno. – sashaeve

+1

Forse sono un po 'amaro, ma come fa una domanda che richiede un indovinello riguardo al problema reale ottenendo 6 upvotes? –

risposta

16

Se ho capito bene.

Si dispone di un modulo Web con un pulsante.

Si preme il pulsante che provoca il ritorno di un post e il gestore di eventi per il pulsante premere per eseguire.

Quindi si preme refresh e la pagina ha nuovamente eseguito il gestore eventi del pulsante.

Il motivo di ciò è l'aggiornamento delle ultime informazioni inviate al server. Quali sono le informazioni sul clic del pulsante in __doPostback. Questo è il motivo per cui stai visualizzando di nuovo l'evento del pulsante.

Ecco un article che parla di come rilevare un aggiornamento su un postback.

+0

Come posso risolvere questo problema? – Noro

+1

@Noro c'è un articolo che ho collegato nella risposta. –

4

È perché facendo clic su questo pulsante si invia una richiesta POST alla pagina. I dati POST vengono mantenuti nelle intestazioni http e quando si aggiorna, viene inviato nuovamente al server.

Il tuo browser dovrebbe avvisarti quando tenti di aggiornare la pagina.

3

Questo è di progettazione. Quando fai clic su un pulsante lato server (con l'attributo runat="server"), un clic causerà un postback e l'evento clic sul pulsante verrà attivato.

Se volete qualche comportamento lato client, è necessario utilizzare l'attributo OnClientClick, come descritto nel this articolo di MSDN (Procedura: Rispondere alle pulsante Web Control Server eventi nello script client).

0

Se questo è veramente importante per qualcuno, allora possono aggiornare di nuovo la pagina tramite Response.Redirect(). Questa è la soluzione più semplice che sono riuscito a trovare.

0

Ho avuto lo stesso problema ed è stato risolto inserendo il pulsante come asp: AsyncPostBackTrigger di updatePanel.

0

Se si desidera aggiornare parte della pagina poi mettere il controllo all'interno del UpdatePanel se il controllo provoca PostBack

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Button CssClass="btn btn-default" 
      onClick="uploadAttachmentToList" runat="server" 
      ID="btnUpload" ClientIDMode="Static" Text="Upload" 
     /> 
    </ContentTemplate> 
</asp:UpdatePanel> 
0

il modo più semplice per risolvere questo problema è quello di reindirizzare la tua pagina in una certa URL o aggiornare la vostra pagina corrente utilizzando Response.Redirect (Request.RawUrl);

Problemi correlati