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.
Nota: Questo script contiene un allegato.
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download



