Hace tiempo que construí una aplicación ASP.NET MVC, y después de algunos ciclos de mantenimiento me pregunto si adopté el mejor enfoque para la administración del estado. Todo funciona, pero tengo la sensación de que hay una mejor manera.Administración del estado en ASP.NET MVC
El sitio se basa en una funcionalidad de búsqueda que tiene bastantes opciones. Un usuario comienza a usar el sitio completando varias opciones de búsqueda en un formulario y haciendo clic en el botón "buscar". Este botón mensajes al método de búsqueda con todas las opciones de búsqueda se definen como parámetros a los métodos de búsqueda, por ejemplo:
public ActionResult Search(string param1, string param2, string param3, int? param3, long? param4)
Ahora la página de resultados que se muestra tiene una serie de enlaces en él, dando lugar a diversas páginas de detalles , etc. Desde que necesita el estado de búsqueda para ser preservado en la página de detalles, me encuentro creando ActionLinks con una gran cantidad de parámetros por todo el lugar, tales como:
<%=Html.ActionLink("LinkText", "MethodName", new {id="idOfDetailPage", param1=Model.param1, param2=Model.param2, param3=Model.param3, param4=Model.param4}, null)%>
la mayor parte de los valores de los parámetros en cada enlace Aún no cambiar desde el estado actual de la búsqueda, pero necesito pasarlos para poder crear otros enlaces en la página de detalles con la c los parámetros de búsqueda actuales, como "volver a los resultados de búsqueda", por ejemplo.
Cuando necesito agregar un parámetro de búsqueda debido a una nueva solicitud de función, me encuentro modificando una gran cantidad de enlaces, así como también los métodos del Controlador a los que conducen los enlaces. Aquí es donde siento que necesito una mejor manera.
He pensado en usar el estado de sesión para mantener los parámetros de búsqueda, pero por alguna razón pensé que esto no era lo mejor para usar en ASP MVC y tengo curiosidad por saber si hay otra manera más clara de hacerlo.
Nota: También he intentado un enfoque en el que uso un objeto fuertemente tipado en ActionLink, pero aún necesito pasar parámetros a ese objeto para que no sea mucho mejor.
Se aprecian todas las ideas.
Esto funciona siempre que siempre pase los mismos parámetros de búsqueda y solo los parámetros de búsqueda al acto ion, como la acción de búsqueda. Sin embargo, me meto en problemas cuando necesito pasar datos adicionales a la acción, como el ID de un elemento (como en el caso de una página de detalles).Entonces no puedo simplemente pasar el Modelo al método de ayuda Html.ActionLink. Además, muchos enlaces requieren que se modifique uno de los parámetros de búsqueda, pero el resto permanece igual, por lo que con este enfoque necesito seguir creando nuevos objetos SearchParameters. Funciona, pero se vuelve complicado después de un tiempo. –
Voy a probar y señalar que las búsquedas de marcadores no siempre son buenas para hacer, sino que dependen del contexto y de la aplicación; esto es especialmente cierto si la búsqueda tiene dependencias que no están expuestas. en los parámetros Dicho esto, creo que esta es una buena generalización (-: – Murph