TADA: ClientPages!

Salve ragazzi, mi dispiace: ci sono ancora :-D

Prima di tutto ringrazio tutti coloro che mi hanno fatto i complimenti per la mia nomina a MVP. Non me ne aspettavo così numerosi ;-) Non l'ho fatto prima perché ho un brutto rapporto con il blog, non che snobbi il riconoscimento.

Passiamo alle ClientPages. Cusa lèè? Questo è il link alla pagina ufficiale del lab.

In pratica è un'implementazione del client callback presente nella futura versione 2 di ASP.NET.
Anzi, ho fatto di più. Ho creato una struttura di classi ed ho esteso alcuni normali webControl. Quello che fa la versione ASP.NET 2 nella beta 1 è:
- richiamare la pagina;
- invocare il metodo RaiseCallbackEvent del controllo;
- restituire una stringa ad una funzione JavaScript;

Le ClientPages invece fanno:
- richiamare la pagina mandando a scelta tutto il form;
- invocare il metodo RaiseCallbackEvent del controllo;
- emettere del codice JavaScript richiesto da uno o più controlli della pagina;
- risalvare il viewState mandandolo indietro e sostituendolo nella form.

Il risultato è che noi lavoriamo normalmente con i controlli (intercettiamo eventi, binding, modifiche proprietà ecc) ma differenziando il comportamente. Se in fase di client callback si fermerà prima del rendering ed emetterà codice Js, altrimenti effettuerà il normale rendering della pagina.

Non è stato facile, le classi del Framework .NET hanno molti membri internal e private e qualche chiamata via reflection viene fatta. Ovviamente non tutte le proprietà sono dinamiche, non mi andava di riscrivere tutti i WebControls :-D oltre al fatto molti membri e classi non si possono sovrascrivere.

Insomma, se volete vederlo al lavoro, andate qua. Noterete come tutto viene fatto senza postback, che non c'è nessun codice nuovo da scrivere e che se scatenate un postback normale avrete il viewState e le proprietà corrette.

Secondo me è fichissimo, ma sono di parte ;-)

Nella stessa categoria

Commenti
nostromo scrive:
comlimenti

lavoro davvero mostruoso

complimenti :)
21/07/2004 ore 11.28 | 5 risposte
Ricciolo scrive:
Re: comlimenti

Grassie, ne sono soddisfatto

ps: l'ho visto solo adesso il post
23/07/2004 ore 10.09 | 1 risposta
Luci@no scrive:
Re: comlimenti

perdonami ......


mi spiace che devo essere sempre io ....


cmq... spero ti sia utile...
------------------------------------------------------------
Server Error in '/Ricciolo' Application.
--------------------------------------------------------------------------------

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 24: ListDictionary h = new ListDictionary();
Line 25: for (int x = 0; x < 50; x++)
Line 26: h.Add(list.SelectedItem.Text + "-" + x.ToString(), x.ToString());
Line 27:
Line 28: countries.DataSource = h;


Source File: D:\Domini\www.xmlroot.it\ricciolo\clientpage.aspx.cs Line: 26

Stack Trace:


[NullReferenceException: Object reference not set to an instance of an object.]
ASPItalia.com.ClientCallback.DefaultPage.list_SelectedIndexChanged(Object sender, EventArgs e) in D:\Domini\www.xmlroot.it\ricciolo\clientpage.aspx.cs:26
System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +108
ASPItalia.com.ClientCallback.ListBox.RaiseCallbackEvent(String data) +13
ASPItalia.com.ClientCallback.ClientPage.raiseClientCallback(String clientCallbackData, String controlID) +85
ASPItalia.com.ClientCallback.ClientPage.processRequest(HttpContext context, String controlID, String clientCallbackData) +34
ASPItalia.com.ClientCallback.ClientPage.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +340




------------------------------------------------------------
28/07/2004 ore 22.00 | 1 risposta
nostromo scrive:
Re: comlimenti

quanto prima voglio provare ad usarli le vacanza si avvicinano e sarà difficile farlo prima della fine di agosto.

ti rinnovo i complimenti lavoro bellissimo e utile

xiaaooz
23/07/2004 ore 10.20
Ricciolo scrive:
Re: comlimenti

Ah ma sei sempre il solito. Comunque succede quando non selezioni nessuna regione e quindi SelectedItem è null. Una stupidata
03/08/2004 ore 9.04 | 1 risposta
Luci@no scrive:
Re: comlimenti

io?? sei te il solito!!!!



Ricciolo ha scritto:
Ah ma sei sempre il solito. Comunque succede quando non selezioni nessuna regione e quindi SelectedItem è null. Una stupidata
03/08/2004 ore 13.52

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - Ricciolo.NET - Il blog di Cristian "Ricciolo" Civera

TagCloud
BLOG INFO
  • Post: 178
  • Commenti: 79
  • TrackBacks: 39
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA