2012-01-31 10 views
5

Tengo un sitio ASP.NET MVC muy simple que muestra imágenes de la base de datos. El usuario rellena algunos parámetros de búsqueda y una Vista devuelve una lista de imágenes de la base de datos que coinciden con los criterios de búsqueda.ASP .NET MVC Almacenamiento de muchos parámetros entre vistas

Ahora estoy agregando Pagination, donde dependiendo del número de página omito una cierta cantidad de imágenes recuperadas de la base de datos. Tengo esto funcionando para la primera página. Mis parámetros de búsqueda se pierden cuando hago clic en la segunda página de resultados, ya que no tengo ningún mecanismo para almacenar los parámetros de búsqueda entre las vistas en este momento.

Cuál es el mejor enfoque para tomar. Podría tener muchos parámetros de búsqueda. ¿Debo almacenarlos todos en la sesión o en campos ocultos? Eso se siente como un truco. ¿Debo tener un ViewModel independiente para guardar los parámetros de búsqueda y almacenar eso en la sesión?

¿Cuál es el enfoque típico que se debe tomar?

Respuesta

1

Normalmente almacenaría datos de paginación cruzada en campos ocultos. Para la escalabilidad, las sesiones deben limitarse a datos relacionados a toda la sesión. Si poner los datos en campos ocultos abre una vulnerabilidad, puede considerar la serialización de un modelo de vista y encriptarlo como un campo oculto. Ponerlo en la URL es otra opción, aunque está limitado a la cantidad de contenido que puede colocar allí.

+0

Gracias. Me gusta la idea de serializar el modelo de vista y tener un solo campo oculto. Vengo de un fondo de WPF/WinForms y la idea de tener muchos campos ocultos en una página simplemente no me parece agradable. Supongo que tengo que vivir con eso. He hecho un poco más de búsqueda y parece ser el enfoque más común. – Lance

1

Los pondría todos en la cadena de consulta de sus enlaces "Siguiente" y "Anterior". Esto permitiría a los visitantes marcar como favoritos la URL completa y volver a la misma página con la misma configuración de filtro y clasificación.

Cuestiones relacionadas