Quando si crea un'etichetta in .net e si imposta la visibilità su Nascosto, non esegue il rendering sul client e i suoi dati vengono archiviati in viewstate.
Pertanto, non è "più" sicuro di viewstate poiché utilizza viewstate per mantenere i dati.
Per quanto riguarda i campi nascosti, ci sono quattro tipi: Il primo è l'HTML normale che è semplicemente un input di tipo nascosto. Questo non ha rendering visibile anche se è in html. Inoltre non ha proprietà viewstate. Si è dichiarato come:
<input id="MyId" type='hidden' value='whatever' />
il secondo è un ingresso regolare con una proprietà CSS marcatura come nascosto: se CSS è disattivato o in altro modo overriding quindi il controllo sarebbe visibile all'utente. Oltre a questo è piuttosto vicino alla stessa cosa di un tipo = 'nascosto'.
<input id='MyId' type='text' value='whatever' style='visibility:hidden' />
Il terzo è il campo nascosto .Net. Questo ha lo storage viewstate, ma genera anche un normale campo nascosto in html.
<asp:HiddenField id='MyId' runat='server' value='whatever' />
E, la quarta è una normale casella di testo .net contrassegnata come non visibile.
<asp:TextBox id='MyId' runat='server' Text='whatever' Visible='False' />
I file .net causeranno l'inserimento dei dati in viewstate. Quelli HTML no. Se si imposta Visible = False su un controllo .Net, esso non viene reso al client, tuttavia i dati vengono in genere archiviati in viewstate.
Ci sono altri modi per inserire dati nella pagina, ma sono derivazioni di quanto sopra.
In generale, se si dispone di un valore necessario per il codice javascript ma non è necessario visualizzarlo sul client, si utilizza un campo nascosto (html o .net). Se si dispone di un valore segreto, in genere non si desidera che questo vada al lato client se possibile. E questo significa anche tenerlo fuori dal viewstate. Come nota a margine, non dipendere da "sicurezza" del viewstate, ci sono strumenti là fuori che facilmente lo decrittografano.
Ah! Quindi questa è la salsa segreta. Grazie Chris –