Clear dei Web Control in .NET
Posted by Ricibald on 12th January 2008
Nelle pagine web si ha spesso l’esigenza di resettare il contenuto dei controlli a seguito della pressione di un pulsante.
Si immagini ad esempio una pagina di inserimento di un post in un blog. Dopo aver aggiunto correttamente la pagina nel blog si vuole ricevere la stessa pagina di composizione ma resettata di tutti i campi (come in WordPress).
In .NET per ottenere questo comportamento abbiamo diverse tecniche, che hanno però inconvenienti:
- disabilitare il ViewState dai controlli
- il ViewState non viene però conservato in caso di PostBack differenti, come errori nell’inserimento della pagina
- resettare i controlli nel
Page_Load, nel casoIsPostBackvale true- i controlli vengono però resettati per ogni PostBack, non per quello specifico del pulsante
- è necessario resettare manualmente tutti i controll, che potrebbe essere un lavoro con errori di consistenza (come tutti i lavori “copia e incolla”)
- resettare i controlli nel gestore del click del pulsante
- è necessario resettare manualmente tutti i controll, che potrebbe essere un lavoro con errori di consistenza (come tutti i lavori “copia e incolla”)
- eseguire il
Response.Redirectverso sé stesso nel gestore del click del pulsante- perdo i valori di tutti i controlli: non posso selezionare quali controlli viceversa mantenere
- si possono passare eventuali valori tramite QueryString:
Response.Redirect(Request.Url.GetLeftPart(UriPartial.Path) + "?message="+messaggio);
- eseguire il
Server.Transferverso sé stesso nel gestore del click del pulsante- perdo i valori di tutti i controlli: non posso selezionare quali controlli viceversa mantenere
- si possono passare eventuali valori tramite CrossPagePostback
La tecnica migliore è senza dubbio l’ultima. Come al solito, non so se questa sia la tecnica migliore: sono più che curioso di scoprire se ci sono tecniche che non ho considerato…
Posted in .net | No Comments »