with vista una que parcial net mvc example asp asp.net-mvc razor partial-views

asp.net-mvc - vista - render partial view mvc 5



ASP.NET MVC: ¿Usar Html.Partial o Html.Action? (1)

Tengo un sitio con una barra de navegación definida en el diseño. La barra de navegación se usa en varias vistas del sitio y tiene contenido dinámico que se genera a partir de un par de consultas en la Base de datos.

Me pregunto cuál es la mejor práctica para representar este menú (definido en una vista parcial).

Por lo que sé, puedo hacerlo de dos maneras, con algunas ventajas y desventajas para cada una:

Usando Html.Action: + Es completamente independiente de la vista que está usando el diseño - Agrega una solicitud adicional para representar una sección de la página - Estoy agregando un método de Acción que devuelve una vista parcial que no se llama desde Ajax.

Uso de Html.Partial: + Una solicitud simple para representar la vista completa: cada modelo de vista debe contener la información requerida para la barra de navegación

Realmente apreciaría sus ideas sobre esto, ya que tengo varios escenarios como este en mi sitio y no estoy seguro de cuál es el mejor.

¡Gracias!


Usaría Html.Action especialmente si este menú contiene algunos datos dinámicos que se obtienen de la base de datos. La ventaja es que puede disociar completamente esta recuperación en una acción completamente separada de la principal. Además, el resultado de las acciones secundarias se puede almacenar en la [OutputCache] caché decorándolas con el atributo [OutputCache] . Al hacer esto, podría reducir la carga en su base de datos si los datos no cambian con bastante frecuencia.

Agrega una solicitud adicional para representar una sección de la página

Debes haber malinterpretado algo al respecto. No hay una solicitud adicional del cliente. Todo se sirve en una sola solicitud. Hay una instanciación de controlador adicional y ejecución de acción, pero no una nueva solicitud HTTP del cliente. Es como si se ejecutaran 2 acciones de controlador en la misma solicitud y su resultado se agregara en una sola página HTML enviada al cliente.