Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    differenza UseSubmitBehavior true/false

    scusate qualcuno mi saprebbe spiegare la differenza nell'impostare la proprietà "UseSubmitBehavior" di un pulsante aspnet su true o su false.

    questo è il rendering se imposto su false:

    <input type="button" name="Button1" value="Submit" onclick="javascript:__doPostBack('Button1','')" id="Button1" />

    e questo su true (il predefinito)

    <input type="submit" name="Button1" value="Submit" id="Button1" />


    cioè sono diversi ma alla fine tutti e due provocano un postback, qualè la differenza?

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Articolo MSDN

    Credo che sia per emulare il vecchio submit, senza tutto ciò che accade durante un postback del framework .Net

  3. #3
    ciao andrestu, ciao djciko,

    scusa ma questa volta ti devo proprio correggere,
    la differenza è sottile e mi dispiace dirlo ma non è per emulare il vecchio submit.

    trovi una spiegazione sommaria su MSDN


    in pratica ti serve se stai costruendo un controllo custom per gestire l'evento di postBack ASP.NET, leggermente diverso al submit generato dal browser.

    ciao

  4. #4
    Grazie Gluck,

    lo immaginavo anche se ancora non son pronto x i custom control ma penso che presto affronterò questo argomento

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    infatti ci avevo messo un 'credo'...non avevo mai approfondito. thanks

  6. #6
    ok
    comunque grazie anche a te della risposta djciko

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    infatti ci avevo messo un 'credo'...non avevo mai approfondito. thanks
    :master: Senti, io vedo le cose da un altro punto di vista.
    Tutto parte dall'html. Per spedire richieste al server posso usare un form:

    <form action="?" method="post">

    dentro ci metto i dati da spedire, necessariamente dotati da name, non di id

    <input name="Text1" type="text" value="valore Text1" />


    Adesso, per spedire la richiesta, ho sostanzialmente due modi:

    <input name="Submit1" type="submit" value="submit" />


    uso di input di tipo submit dotato necessariamente di name (non di id) e qui non è necessario javascript


    oppure uso javascript per far partire la richiesta al server
    <input name="Button1" type="button" value="button" onclick="document.forms[0].submit();" />

    Nel primo caso, il server riceve tutte le informazioni per decidere l'azione da intraprendere (ed infatti asp.net non aggiunge niente); nel secondo caso non riceve nulla e non saprebbe che azione intraprendere. Ecco perchè aggiunge un meccanismo javascript che sostanzialmente crea e valorizza un hidden dentro il form

    Tutto questo per dirti che in fondo non avevi poi tutti i torti con la tua risposta.


    ps. ne approfitto per fare una domanda a mia volta
    Come fare per essere certi che nella pagina ci sia il metodo __doPostBack in modo da richiamarlo alla bisogna da javascript?
    Pietro

  8. #8
    Originariamente inviato da pietro09
    Nel primo caso, il server riceve tutte le informazioni per decidere l'azione da intraprendere (ed infatti asp.net non aggiunge niente); nel secondo caso non riceve nulla e non saprebbe che azione intraprendere. Ecco perchè aggiunge un meccanismo javascript che sostanzialmente crea e valorizza un hidden dentro il form
    scusa, cosa intendi per "non riceve nulla".....
    il server riceve tutti i dati inseriti in qualsiasi input,
    l'unica cosa è che non scattano gli eventi lato server (_click), cosa che succede invece con l'uso di __doPostBack.
    Intendevi questo?

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Gluck74
    scusa, cosa intendi per "non riceve nulla".....
    il server riceve tutti i dati inseriti in qualsiasi input,
    l'unica cosa è che non scattano gli eventi lato server (_click), cosa che succede invece con l'uso di __doPostBack.
    Intendevi questo?
    Se uso <input name="Submit1" type="submit" value="submit" />
    il server riceve la variabile Submit1 di valore submit e capisce da qui chi ha fatto la richiesta;

    se uso <input name="Button1" type="button" value="button" onclick="document.forms[0].submit();" />

    il server non riceve l'informazione per capire chi ha fatto la richiesta

    L'unico modo è quello di aggiungere l'informazione. Che si può fare sostanzialmente in due modi: o accodando l'informazione nell'url della richiesta, o aggiungendo uno o più hidden. Gli eventi server scattano solo se il server "capisce" chi ha fatto la richiesta.
    Il server riceve solo quello che l'html con javascript può inviare.

    Ma ripeto: è solo una mia particolare visualizzazione. In una pagina, a volte mi serve un pulsante tipo submit, a volte un pulsante tipo button. Ecco perchè ho quella proprietà che mi permette di avere un tag o un altro.
    Pietro

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Credo che abbiate ragione entrambi. Non serve soltanto a cambiare il modo di spedire i dati al server (con uno script aggiunto dal Framework o meno), ma anche agli sviluppatori di controlli custom, come citato nella guida:

    Se la proprietà UseSubmitBehavior è impostata su --false--, gli sviluppatori di controlli possono utilizzare il metodo GetPostBackEventReference per restituire l'evento di postback client per Button. La stringa restituita dal metodo GetPostBackEventReference contiene il testo della chiamata alla funzione del lato client e può essere inserita in un gestore eventi sul client.
    il metodo GetPostBackEventReference l'ho studiato anni fa ma mai messo in pratica..Ricordo un:
    "Implements INamingContainer" (oltre ad "Inherits System.Web.UI.WebControls.WebControl")
    per fare un contratto fra il CustomControl e quella Interfaccia, ma non vorrei dire sciocchezze...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.