asp.net-mvc - una - render partial view mvc 5 example
MVC Html.Partial o Html.Action (2)
Estos son los que considero mis directrices sobre el uso de Html.Action o Html.Partial
Html.Partial
- Use
Html.Partial
cuando estéHtml.Partial
contenido estático o, - Si va a pasar datos del ViewModel que se está enviando a la vista principal
Html.Action
- Use
Html.Action
cuando realmente necesite recuperar datos adicionales del servidor para completar la vista parcial
Básicamente, si es estático, use Html.Partial()
. Si es dinámico, datos independientes del modelo, use Html.Action()
. Probablemente haya más escenarios, pero esto le dará una buena idea de dónde / cómo ir. Html.RenderPartial()
y Html.RenderAction()
son intercambiables para las funciones mencionadas anteriormente.
Soy nuevo en asp.net MVC así que por favor tengan paciencia conmigo. Necesito crear un menú que se repita en múltiples vistas. Lo que serviría mejor al propósito Html.Action
O Html.Partial
.
Html.Partial: renderiza una vista parcial sin tocar primero una acción del controlador. Ver: Vistas parciales
Html.Action Call a Controller Action , que puede devolver una vista / vista parcial (o no, podría arrojar un HttpNotFound o devolver Json u otras cosas).
¿Su menú requiere un modelo de vista, o es estático?
Si se trata de un menú estático, Html.Partial
se ajustará a sus necesidades. Coloque el contenido del menú estático dentro de la vista parcial y llame a Html.Partial
donde desee que se Html.Partial
.
Si el menú se genera fuera de un modelo de vista, puede usar Html.Partial
o Html.Action
:
Encadenando el modelo de vista usando Html.Partial :
public class MenuViewModel {
// menu data goes here
}
public class GeneralViewModel : MenuViewModel {
// general view info goes here
}
public ActionResult Index() {
return View(new GeneralViewModel());
}
// View Code
@model GeneralViewModel
<div>@Html.Partial("_partialName", model)</div>
Aquí pasamos un modelo de vista completo a la vista y la vista llama a Parcial y entrega su modelo a la vista parcial.
** Separación del modelo usando Html.Acción: **
public ActionResult Index() {
return View(new GeneralViewModel());
}
public ActionResult MenuView() {
return PartialView(new MenuViewModel());
}
// View Code
@model GeneralViewModel
<div>@Html.Action("MenuView")</div>
Aquí la vista llama a la acción del controlador MenuView que crea un nuevo modelo de vista y lo pasa al parcial.