Domanda

Se ho un semplice pezzo di dati da memorizzare (un intero o una stringa per esempio) potrei scegliere di memorizzarlo in ViewState o usando un controllo HiddenField.

Perché dovrei scegliere l'uno rispetto all'altro?

ViewState

  • Difficile da decodificare per l'utente (ritenuto impossibile), il che potrebbe essere desiderabile

HiddenField

  • Il valore può essere utilizzato in JavaScript

Ci sono altri pro e contro?

È stato utile?

Soluzione

Non proprio, ViewState è effettivamente memorizzato in un campo nascosto, quindi l'unica vera differenza è la codifica.

A meno che non sia necessario manipolare il valore con JavaScript o sperare di disattivare ViewState su questa pagina del tutto, utilizzare ViewState. Principalmente solo perché esistono strumenti di terze parti ( come questo ) che comprendono ViewState e che hanno vinto capire il tuo campo nascosto personalizzato.

Altri suggerimenti

Da un punto di vista della manutenibilità, userei ViewState. Scrivere meno codice significa ridurre i punti di errore del software. Significa anche che qualsiasi sviluppatore che verrà dopo di te avrà più tempo a mantenere la soluzione.

Se non ti senti completamente a tuo agio con questo, scrivi un accedente sulla pagina che funge da facciata per recuperare il valore dal ViewState. In seguito, se ti senti obbligato a convertirlo in un campo nascosto, l'accessor può gestire questo interruttore apparentemente per il resto del codice. Assicurati solo di documentare le tue ragioni per farlo.

ViewState è memorizzato nella pagina stessa, quindi aumenta le dimensioni della pagina e può causare problemi di prestazioni .

Inoltre possiamo configurare l'applicazione per salvare il viewstate sul server piuttosto che sulla stessa pagina che potrebbe proteggere da alcuni problemi di sicurezza.

Jomit

I campi nascosti sono invisibili nella pagina e i loro valori possono essere visualizzati nella sorgente della vista ma il valore di view-state è codificato e non è leggibile.

I valori dei campi nascosti sono pubblicati nella pagina successiva. (Nota: utilizzare server.transfer per ottenere il valore dei campi nascosti).

Viewstate è valido solo sulla pagina in cui ti trovi o su cui stai postando. Con un campo nascosto è possibile accedere ai dati nella pagina successiva a cui si accede (così come altri dati) utilizzando il metodo PreviousPage dell'oggetto Page in questo modo:

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top