Tengo una vista que se compone de encabezados superiores, izquierdos e inferiores y un panel de contenido principal. Supongamos que durante una solicitud AJAX necesito actualizar el HTML de los paneles superior, inferior y principal (el encabezado izquierdo debe permanecer igual).ASP.NET MVC y AJAX
Me preguntaba cuál sería la mejor manera de lograr esto. Lo primero que se pensó fue poner el panel de contenido principal en un parcial y tener una acción de controlador que devuelva PartialView. Esto no funcionaría porque como la acción solo devuelve el HTML del panel principal, no puedo actualizar los encabezados superiores e inferiores.
Así que si pongo los encabezados superior e inferior en sus respectivas vistas parciales, necesitaría mi acción de controlador para devolver múltiples vistas parciales. ¿Es esto posible o estoy haciendo algo completamente fuera de la pista?
Vi que es posible render a partial view to a string así que pensé que podría usar esta técnica en la acción para devolver un objeto JSON con 3 propiedades que representan el HTML de los 3 parciales que necesito actualizar. Pero, de ser posible, se siente como un enfoque muy equivocado para mí.
Otra idea que tuve fue devolver un objeto JSON que solo contenía los datos necesarios para los parciales y usar javascript para construir el HTML. Pero construir una IU en javascript parece un trabajo difícil (El contenido principal parcial usa GridView de MvcContrib con paginación y clasificación).
Así que realmente agradecería sugerencias sobre cuál sería el enfoque más limpio para manejar dicho escenario. También una solución adaptable sería genial: por ejemplo, si el usuario tiene desactivada la javascript , simplemente volvería a cargar toda la página sin AJAX.
UPDATE:
Andrew Siemersuggested colocando cada sección en su propia vista parcial y realizar múltiples peticiones Ajax. Esto parece ser un enfoque perfectamente válido, pero desafortunadamente no es aplicable en mi escenario debido a los siguientes detalles que omití en la descripción inicial del problema: el encabezado superior se usa para mostrar mensajes de error/información de eventos que ocurren en el panel principal. Entonces, por ejemplo, necesito mostrar el mensaje de error en caso de que se produzca una excepción cuando vaya a buscar el modelo para el panel principal. Por lo tanto, solo se puede realizar una única solicitud para actualizar esos dos paneles.
se puede echar un vistazo a esto: http://stackoverflow.com/questions/7086440/mvc-validating-binded- to-entitiy-with-reference-to-other-entities pls (no tengo idea de cómo contactarlo directamente) :) thnx – cpoDesign