Programming Languages Hacks

Importanti regole per linguaggi di programmazione rilevanti come Java, C, C++, C#…

  • Subscribe

  • Lettori

    I miei lettori abituali

  • Twitter

Clear dei Web Control in .NET

Posted by Ricibald on January 12th, 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 caso IsPostBack vale 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.Redirect verso 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.Transfer verso 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…

Leave a Reply

You must be logged in to post a comment.