Cosa fa webform_DoPostBackWithOptions ()?

Ho un button dichiarato come questo:

<asp:Button id=Send runat="server" EnableViewState="False" ToolTip="Email me this report" CssClass="Button" Text="Email me this report"> </asp:Button> 

Ma se faccio Inspect Element nel browser, mi sembra così:

 <input type="submit" class="Button" title="Email me this report" id="ctl03_Toolbar_Send" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(“ctl03$Toolbar$Send”,””, true, “”, “”;, false, false))" value="Email me this report" name="ctl03$Toolbar$Send"> 

Mi chiedo where viene l'evento onclick? Che cosa fa?

Grazie per il vostro aiuto in anticipo.

Se si imposta la properties; PostBackUrl per il controllo del server Button, significa che è la pubblicazione della pagina trasversale e quindi il framework asp.net invece del normale __DoPostBack () aggiunge "WebForm_DoPostBackWithOptions". Controllare se è impostata la properties; "PostBackUrl" per questo button.

 <asp:Button id=Send runat="server" EnableViewState="False" PostBackUrl="~/Page2.aspx" ToolTip="Email me this report" CssClass="Button" Text="Email me this report"> </asp:Button> 

Se nel tuo caso non hai impostato il "PostBackUrl", quindi il framework ASP.NET non aggiunge questo per impostazione predefinita per il controllo dei pulsanti, quindi questo significa che deve essere un altro controllo di impostazione del valore dell'attributo OnClick probabilmente utilizzando il seguente codice secondario di severità –

  PostBackOptions myPostBackOptions = new PostBackOptions(this); myPostBackOptions.ActionUrl = "Page2.aspx"; myPostBackOptions.AutoPostBack = false; myPostBackOptions.RequiresJavaScriptProtocol = true; myPostBackOptions.PerformValidation = true; // Add the client-side script to the HyperLink1 control. Button1.OnClientClick = Page.ClientScript.GetPostBackEventReference(myPostBackOptions); 

Comprendere che non esiste alcuna cosa come "controlli ASP.NET" nell'elaborato HTML che il server Web emette in risposta a una richiesta di un utente. Tutti i controlli ASP.NET rendono rendere alcuni HTML in un modo che rende tutto funziona come previsto sul server. Il controllo Button emette l'attributo "onclick" per triggersre alcuni JavaScript che provocheranno i dati del module inviati al server (supponendo che nessun validatore lato client lo impedisca).

Il motivo per utilizzare questo metodo per submit i dati è, come ho appena menzionato, per dare a uno script lato client la possibilità di eseguire in primo luogo, ad esempio i controlli di validation dei dati che possono verificare e vedere se i campi obbligatori non sono stati compilati.

Fondamentalmente, a less che non si sta cercando di creare i propri controlli server ASP.NET, non c'è bisogno di preoccuparsi troppo di ciò che viene emesso come risposta finale da IIS. È bene conoscere cosa sta succedendo (e certamente non dico che non dovresti imparare esattamente come i controlli dei server fanno la loro cosa), ma non devi essere familiare con each chiamata e il parametro lato client ASP.NET sta facendo per iniziare.

Rimuovi "EnableViewState =" False "e dovrebbe utilizzare il PostBack predefinito.

Quando si imposta il button per non memorizzare lo stato, utilizzerà invece questa opzione collegata all'evento javascript page_load diversamente nella pagina.