Je suis nouveau sur asp.net MVC, alors soyez indulgent avec moi. J'ai besoin de créer un menu qui se répète sur plusieurs vues. Qu'est-ce qui servirait mieux le but Html.Action
OR Html.Partial
.
Voici ce que je considère comme mes directives sur l'utilisation de Html.Action ou Html.Partial
Html.Partial
Html.Partial
Lorsque vous rendez du contenu statique ou,Html.Action
Html.Action
Lorsque vous avez réellement besoin de récupérer des données supplémentaires sur le serveur pour remplir la vue partielleFondamentalement, s'il est statique, utilisez Html.Partial()
. S'il s'agit de données dynamiques et indépendantes du modèle, utilisez Html.Action()
. Il y a probablement plus de scénarios, mais cela vous donnera une bonne idée où/comment aller. Html.RenderPartial()
et Html.RenderAction()
sont interchangeables pour les fonctions nommées ci-dessus.
Html.Partial: Rendu a Vue partielle sans frapper d'abord une action du contrôleur . Voir: Vues partielles
Html.Action Appelez une Action du contrôleur , qui peut renvoyer une vue/vue partielle (ou non, il pourrait lancer un HttpNotFound ou retourner Json, ou d'autres choses).
Votre menu nécessite-t-il un modèle de vue ou est-il statique?
S'il s'agit d'un menu statique, Html.Partial
répondra à vos besoins. Placez le contenu du menu statique dans la vue partielle et appelez Html.Partial
où vous voulez qu'il s'affiche.
Si le menu est généré à partir d'un modèle de vue, vous pouvez utiliser soitHtml.Partial
ou Html.Action
:
Chaînage du modèle de vue à l'aide de 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>
Ici, nous passons un modèle de vue complet à la vue et la vue appelle Partielle et transmet son modèle à la vue partielle.
** Séparation du modèle en utilisant Html.Action: **
public ActionResult Index() {
return View(new GeneralViewModel());
}
public ActionResult MenuView() {
return PartialView(new MenuViewModel());
}
// View Code
@model GeneralViewModel
<div>@Html.Action("MenuView")</div>
Ici, la vue appelle l'action du contrôleur MenuView qui crée un nouveau modèle de vue et le transmet au partiel.