Custom Control con caricamento del ViewState in base all'ID

di Marco Leoncini, in ASP.NET 2.0, Custom Control,

Il ViewState dei controlli creati runtime e aggiunti in seguito alla collezione Controls del controllo padre è ripristinato in base al proprio indice nella collezione e perchè ciò avvenga correttamente è necessario rispettare due semplici regole:
- a ogni PostBack i controlli devono essere ricreati e aggiunti esattamente nella stessa posizione;
- ogni nuovo controllo deve essere inserito alla fine della collezione Controls.

È possibile cambiare questo comportamento e far sì che il ViewState sia ripristinato utilizzando l'ID univoco del controllo, molto utile nel caso in cui la gerarchia dei controlli muti tra un PostBack e l'altro.

A questo scopo è sufficiente estendere una classe preesistente e decorarla con l'attributo ViewStateModeByIdAttribute.

Quindi per creare un PlaceHolder personalizzato è sufficiente utilizzare questo codice:

namespace CustomControl
{
  [ViewStateModeByIdAttribute()]
  public class PlaceHolderPlus : PlaceHolder
  {
  }
}

A questo punto dopo la registrazione del nuovo controllo è possibile utilizzare il WebControl come un normale PlaceHolder, ma con il vantaggio che il ViewState viene ripristinato correttamente a prescindere dal numero dei controlli che vengono ricreati al PostBack.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi