Estoy desarrollando una aplicación ASP.NET MVC 2 que se conecta a algunos servicios para realizar la recuperación de datos y la actualización. Los servicios requieren que proporcione la entidad original junto con la entidad actualizada al actualizar los datos. Esto es para poder cambiar el seguimiento y la concurrencia optimista. Los servicios no pueden ser cambiados.Persistencia de datos complejos entre las devoluciones de datos en ASP.NET MVC
Mi problema es que tengo que almacenar de alguna manera la entidad original entre las devoluciones. En WebForms, hubiera utilizado ViewState, pero por lo que he leído, eso está fuera de MVC. Los valores originales no tienen que ser a prueba de manipulaciones ya que los servicios los tratan como no confiables. Las entidades serían (max) 1k y es una aplicación de intranet.
Las opciones que he subido son:
- Sesión - Descartado - Almacenar la entidad en el período de sesiones, pero no me gusta esta idea ya que no hay planes para compartir sesión entre
- URL - descartado - datos es demasiado grande
- HiddenField - Almacenar la entidad serializado en un campo oculto, tal vez con el cifrado/codificación
- HiddenVersion - Las entidades tienen un campo de versión (SQL) en ellas, que podría poner en un campo oculto. Luego, al guardar, obtengo la entidad "original" de los servicios y comparo las versiones, haciendo mi propia concurrencia optimista.
- Galletas - como 3 o 4, pero utilizando una cookie en lugar de un campo oculto
me estoy inclinando hacia la opción 4, aunque 3 serían más simples. ¿Son estas opciones válidas o voy por el camino equivocado? ¿Hay una mejor manera de hacer esto?
No olvide TempData http://stackoverflow.com/search?q=tempdata – R0MANARMY
@ R0manarmy ¿No es TempData válido solo para la solicitud actual? –
Aparentemente cambió mucho en ASP.NET MVC2 http://blog.donnfelker.com/2010/02/26/aspnet-mvc2-tempdata-now-persists/ Opción bastante "Cambiamos la implementación en MVC 2 ligeramente como resultado: el valor se eliminará de TempData después de la solicitud en la que se lo lee, por lo que continuará existiendo en su diccionario TempData hasta que lo visualice en alguna página. Esto permite un escenario de redirección múltiple (como Inicio de sesión de Windows Live ID) para usar TempData y que siga funcionando hasta que esté listo para ello. " – R0MANARMY