viewstate se almacena en una etiqueta oculta <input />
en el formulario. Cuando el usuario inicia una devolución de datos (haciendo clic en un botón, por ejemplo), los datos se devuelven al servidor como parte de los datos del formulario.
Si almacena grandes cantidades de datos en ViewState, incurrirá en una penalización tanto cuando el usuario intente descargar la página (porque todos esos datos serán parte del HTML) como cuando el usuario intente enviar el formulario (porque todos los datos deben cargarse nuevamente en el servidor).
Además, el ViewState se pierde fácilmente. Solo se conserva mientras el usuario envíe el formulario. Si el usuario hace clic en un hipervínculo a otra página, nunca se envía el formulario y se pierden todos los datos contenidos en ViewState. Esto es cierto incluso si la etiqueta de anclaje apunta a la página en la que el usuario se encuentra actualmente.
Veo en su previous question que está tratando de encontrar un buen lugar para colocar sus DataTables. ViewState no es el peor lugar siempre que los datos sean relativamente pequeños. Base64 es mejor que XML en términos de uso de memoria, pero todavía está lejos de ser eficiente. Si los datos son bastante estáticos, le recomendamos que los guarde en el ApplicationState. Si está editando la DataTable con un GridView, entonces GridView ya está almacenando la DataTable para usted, a la que puede acceder a través de la propiedad DataSource (simplemente transfiérala a una DataTable).
También vale la pena señalar que mientras que los datos ViewState está codificado en base64 (lo que significa que el usuario medio no será capaz de entenderlo), que puede ser editado fácilmente por un usuario determinado. Los datos aparentemente inofensivos podrían ser editados para volverse bastante dañinos para su sitio web. Esta es una avenida clásica para hackear un sitio web, por lo que debe tener mucho cuidado con los datos, exactamente, que está almacenando. Por ejemplo, si almacena la identificación del usuario en ViewState, el usuario podría editar la identificación y piratear la cuenta de otro usuario. (Nota: esto es sólo un problema si EnableViewStateMac se ha establecido en False
.)
Downvoters: si no deja comentarios, el OP nunca aprenderá cómo hacer mejores preguntas. Personalmente, no veo ningún problema con esta pregunta. Creo que es útil para la comunidad, así que estoy agregando un +1 para equilibrar las cosas. – JDB
@ Cyborgx37 World es un lugar mejor para vivir gracias a personas como usted. Soy bastante nuevo en esta tecnología y estoy tratando de aprender y eliminar mis confusiones. Es por eso que estoy haciendo preguntas como estas. Pero algunos Downvoters piensan que todos saben lo que conocen y nadie debería hacer esas preguntas. Me recuerda un proverbio chino "El que hace una pregunta es un tonto durante cinco minutos, el que no hace una pregunta permanece inservible para siempre". Lolz –
Gracias, pero en realidad hay un estándar para juzgar las preguntas buenas/malas, lo que significa que no todas las preguntas sobre StackOverflow son bienvenidas (ver http://stackoverflow.com/questions/how-to-ask). Simplemente no veo un problema con el tuyo. – JDB