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
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
- Tutorial Entity Framework 6
- Tutorial Entity Framework
- Tutorial HTML5
- RT @aspitalia Partecipa al nostro evento #RCD4, fai un RT e sarai estratto per 1 copia di #sl3guidacompleta! http://u.aspitalia.com/bw
- Migliorare l'organizzazione delle risorse con Azure Policy
- Configurare più site su unico web role di Windows Azure
- Windows Phone 8 Developer Day - Milano
- ReBuild 2020 Live - Online
- ASPItalia.com Network: si aggiungono LINQItalia.com e SilverlightItalia.com
- Rilasciata la versione 1.0 di ASP.NET MVC