Cerco di esporre la problematica da un'angolatura differente.
Lo scenario potrebbe essere il seguente:
- lo sviluppatore decide di mettere in pagina due "MyCustomControl";
- l'utente finale lancia la pagina;
- alla prima richiesta di rendering per
MyCustomControl1 il metodo (in override mode) OnPreRender provvede a costurire lo script (jQuery) e di registrarlo in pagina
protected override void OnPreRender(EventArgs e)
{
........................
base.OnPreRender(e);
ClientScriptManager cs = this.Page.ClientScript;
........................
//Registrazione dello script personalizzato in pagina
ScriptManagerProxy sm = ScriptManagerProxy.GetInstance(this.Page, this);
cs.RegisterStartupScript(GetType(), SCRIPTCALLERKEY, sm.GetScript(this), true);
}
- alla seconda richiesta avverà la generazione del
nuovo script (compito affidato ad una classe creata ad hoc che tiene in pancia il numero di
MyCustomControl), ovviamente differente dal primo, ED E' QUI che la registrazione fallisce:
il metodo RegisterStartupScript della classe ClientScriptManager non sovrascrive il vecchio script.
Avevo pensato, dunque, di non registrare alcuno scipt fintanto che il numero di controlli passati al metodo (
GetScript(Control control) della mia classe ScriptManagerProxy) non è uguale al numero di controlli effettivi in pagina.
Sto percorrendo una strada ceca? Non lo so, ma nel generare gli script personalizzati avvalendomi di jQuery esiste altro modo?
Grazie per la compassione!!
