Tra la gestione dell'evento Page_Init o l'override del metodo OnInit di una pagina, quale è meglio usare? Grazie.Page_Init vs OnInit
risposta
Ho avuto questa stessa domanda circa un anno fa, ho optato per overridding in contrapposizione agli eventi On_X. Ecco l'articolo che ho letto che copre i pro ei contro: http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx
C'è una buona risposta qui http://objectmix.com/dotnet/251824-oninit-page_init.html.
http://www.justskins.com/forums/page_init-and-page_load-59045.html ha una risposta più approfondita.
Se AutoEventWireup è impostato su false, è necessario eseguire l'override di OnInit poiché Page_Init non è automaticamente disponibile.
È preferibile ignorare il metodo del tipo di base poiché una chiamata virtuale è più semplice e più pulita rispetto alla creazione di un delegato che collega un evento a un gruppo di metodi.
Inoltre, l'utilizzo di AutoEventWireup
impostato su true
significa che si sta introducendo un sovraccarico nell'analisi del codice della pagina poiché ASP.NET dovrà creare delegati per l'utente al momento dell'esecuzione.
Inoltre puoi scegliere se e quando chiamare anche il metodo base - non è possibile farlo con lo stile Page_Load –
Fondamentalmente non vi è alcuna differenza in questi due punti. Questo è ciò che viene fatto in OnInit in classe Pagina:
protected internal override void OnInit(EventArgs e)
{
base.OnInit(e);
if (this._theme != null)
{
this._theme.SetStyleSheet();
}
if (this._styleSheet != null)
{
this._styleSheet.SetStyleSheet();
}
}
Se apriremo base.OnInit faremo sé che questo è il luogo in cui viene sparato Page_Init:
protected internal virtual void OnInit(EventArgs e)
{
if (this.HasEvents())
{
EventHandler handler = this._occasionalFields.Events[EventInit] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}
Quindi, in pratica non c'è differenza in questi due approcci. Tuttavia è necessario chiamare il numero base.Inserire nel metodo sovrascritto se si sceglie di utilizzare l'override anziché l'evento. Un'altra differenza è che se si sta utilizzando l'override è possibile eseguire del codice subito dopo l'applicazione del tema.
Saluti.
P.S. L'unica cosa che consiglio è di usare lo stesso approccio su tutta l'applicazione.
Sì, c'è - solo quando si esegue l'override del metodo OnXXX è possibile scegliere QUANDO chiamare il metodo base (o anche se chiamarlo o meno). Questo potrebbe sembrare un po 'pignolo, ma in alcuni casi, questo può essere cruciale. Quindi, il mio consiglio: prevalga sempre! –
E ho menzionato quell'abilità - "E un'altra differenza è che se stai usando l'override puoi eseguire del codice subito dopo l'applicazione del tema." –
OnX perché principalmente è la tecnica preferita per gestire l'evento in una classe derivata secondo MSDN.
OnInit è migliore perché è in fase di inizializzazione a livello di classe mentre page init può avere un effetto ridondante perché è necessario verificare se si tratta di un postback o meno.
- 1. evento page_init ASP.NET?
- 2. Utilizzo dell'evento OnInit in asp.net
- 3. Angular2 - OnInit non è definito
- 4. Differenza OnInit e OnLoad in ASP.NET?
- 5. La proprietà @Input non è definita in angular 2's onInit
- 6. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 7. VS 2008 vs VS 2008 Express
- 8. .NET vs ASP.NET vs CLR vs ASP
- 9. Atomikos vs JOTM vs Bitronix vs?
- 10. Accumulare vs piega vs ridurre vs comprimere
- 11. ACE vs Boost vs Poco vs wxWidgets
- 12. VS 2013 MSTest vs nUnit vs xUnit
- 13. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - AFFIDABILITÀ
- 14. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 15. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, cosa hanno in comune?
- 16. e vs * e | vs +
- 17. SpiderMonkey vs JavaScriptCore vs?
- 18. * vs ** vs *** in Proguard?
- 19. bundler vs RVM vs gemme vs RubyGems vs gemsets vs system ruby
- 20. Misurare il tempo in Linux - tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
- 21. innerText vs innerHtml vs label vs text vs textContent vs outerText
- 22. Mathematica: non valutata vs Defer vs attesa vs HoldForm vs HoldAllComplete vs etc etc
- 23. Iterator vs. Reference vs. pointer
- 24. Selenium vs. SimpleTest vs. WatiN
- 25. BasicHttpBinding vs WsHttpBinding vs webHttpBinding
- 26. Boo vs C# vs Python?
- 27. StringBuffer vs StringBuilder Vs StringTokenizer
- 28. JSF vs Facelets vs JSP
- 29. Qcodo vs. CakePHP vs. Zend
- 30. select vs poll vs epoll
Grazie Nick! Quello era un buon articolo. Stavo cercando qualcosa di simile. Lo apprezzo molto. : =) –