¿Puedo utilizar ViewState para eliminar la necesidad de pasar una cadena de consulta?

StackOverflow https://stackoverflow.com/questions/1206492

  •  05-07-2019
  •  | 
  •  

Pregunta

Tengo una página con varias listas expandibles. En un mundo perfecto, me gustaría mostrar enlaces a cada una de estas listas y cuando se haga clic en una, se volverá a cargar la página con esa lista en particular mostrada. Leí que ViewState puede eliminar la necesidad de campos de entrada ocultos, cadenas de consulta, etc., pero no estoy familiarizado con el concepto.

Básicamente necesito lograr dos cosas:

  1. Agregar ID de lista a ViewState obj cuando se hace clic en el enlace
  2. Lea la ID de ViewState obj cuando se carga la página, muestre esa lista

¿Puede alguien proporcionarme algunos recursos y / o ayuda sobre este tema? Gracias!

¿Fue útil?

Solución

ViewState es esencialmente un campo oculto codificado largo, almacenado en la parte superior de su página. La diferencia clave entre eso y un campo oculto normal es que ASP .NET lo descodificará y lo analizará automáticamente en una devolución de datos.

Hay mejores formas de lograr lo que quieres hacer.

  • Puedes usar la cadena de consulta. Todo lo que estás pasando es una identificación de lista. Agregue la ID de la lista al final de sus enlaces y búsquelo en Page_Load. Cargue la lista apropiada si la encuentra. Usted querrá manejar el caso donde no se pasa un ID de lista. La cadena de consulta no es mala . Puede ayudar dramáticamente a reducir el peso de la página. Cuando se usa con un reescritor de URL decente, se obtiene un gran control sobre lo que se pasa (y, lo que es más importante, qué no)
  • Si está utilizando controles ASP .NET (como Button o LinkButton) para activar la visualización de una lista, puede establecer la propiedad CommandArgument y recogerla en el código de evento. Luego puede pasar esto como un parámetro a cualquier método o control que esté manejando su lista de representación.

Otros consejos

ViewState se usa para almacenar información en una sola página entre devoluciones de publicaciones, no para pasar argumentos entre páginas.

Puedes pasar argumentos entre páginas usando:

  1. sesión
  2. cadena de consulta
  3. Cookies
  4. Base de datos personalizada
  5. devoluciones de páginas cruzadas

Ninguno de esos métodos agregará automáticamente datos al ViewState de la página solicitada. De ellos, creo que solo el # 2 funciona con enlaces HTML directos (GET), el resto generalmente implica una devolución de datos (POST).

Siempre necesitarás algún tipo de configurador ViewState ( ViewState [" Id "] = source.Id ) en la página solicitada.

Cómo pasar valores entre las páginas web de ASP.NET

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top