TextBox ViewState e LoadPostData

di Marco Leoncini, in asp.net,

non è la prima volta, che casco nel "trappolone" della TexBox e di come viene utilizzato il ViewState.
la proprietà Text è si memorizzata nel ViewState, ma in questo caso, il metodo LoadViewState (ereditato dalla classe WebControl) non è il solo responsabile, nel ripristinare il testo della TextBox, dopo il PostBack.
la classe TextBox, implementa l'interfaccia IPostBackDataHandler; linterfaccia definisce due metodi, LoadPostData e RaisePostDataChangedEvent.
LoadPostData è responsabile del caricamento, dei dati di PostBack ed è implementato così:

bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection 
  postCollection)

  {

  string text1 = this.Text; //questo valore è recuperato dal ViewState

  string text2 = postCollection[postDataKey];//questo dai dati provenienti dal 
  post 

  if (!text1.Equals(text2))

  {

  this.Text = text2;

  return true;

  }

  return false;

  }

  

asp.net tiene traccia di tutti i controlli che restituiscano true dalla chiamata di questo metodo, quindi viene richiamato RaisePostDataChangedEvent , responsabile di scatenare l'evento TextChanged.

è possibile evitare il caricamento dei dati di PostBack, creando una nuova classe, che erediti da TexBox e reimplementi l'interfaccia IPostBackDataHandler, così da nascondere l'implementazione che ne da TextBox:

bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection 
  postCollection)

  {

  string text1 = this.Text;

  string text2 = postCollection[postDataKey];

  if(this.EnableViewState == true)

  {

  if (!text1.Equals(text2))

  {

  this.Text = text2;

  return true;

  }

  }

  return false;

  } 

in questo caso ho usato la propietà EnableViewState, per stabile o no se caricare i dati, ma nessuno vietava di creare una proprietà ad hoc, o magari fornire un implementazione nulla del metodo definito dall'interfaccia.



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.

Nella stessa categoria
I più letti del mese