Je suis nouvelle asp.net MVC, donc s'il vous plaît garder avec moi. J'ai besoin de construire un menu qui se répète à travers de multiples points de vue. Ce qui permettrait de mieux servir l'objectif Html.Action
OU Html.Partial
.
Réponses
Trop de publicités?Voici ce que je considère comme mes lignes directrices sur l'utilisation de Html.Action ou Html.Partielle
Html.Partielle
- L'Utilisation De Code Html.Partielle quand vous vous êtes rendu du contenu statique ou,
- Si vous allez passer des données à partir de ce Dernier qui est envoyé à partir de la vue principale
Html.Action
- L'Utilisation De Code Html.Action lorsque vous avez réellement besoin de récupérer des données supplémentaires à partir du serveur pour remplir la vue partielle
En gros, si elle est statique, l'utilisation de code Html.Partielle. Si dynamique, indépendant du modèle de données, l'utilisation de code Html.RenderAction(). Il y a probablement plus de scénarios, mais cela vous donnera une bonne idée de l'endroit où/comment aller.
Html.Partielle: Rendre une Vue Partielle sans frapper un contrôleur de la première action. Voir: Vue Partielle Sur
Html.D'Action Appel d'un Contrôleur de l'Action, qui peut retourner un point de vue/vue partielle (ou ne peut pas, elle risque de jeter un HttpNotFound ou de retour Json, ou d'autres choses).
Est-ce que votre menu besoin d'un modèle de vue, ou est-il statique?
Si c'est un menu statique, Html.Partial
adaptée à vos besoins. Placer le menu statique contenu à l'intérieur de la vue partielle et appelez - Html.Partial
où vous voulez rendre.
Si le menu est en train d'être générés à partir d'un modèle de vue, vous pouvez utiliser soit Html.Partial
ou Html.Action
:
Le chaînage de la vue modèle à l'aide de Html.Partielle:
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 une vue complète du modèle de la vue et de la vue des appels Partiels et les mains de son modèle hors de la vue partielle.
** Séparer le modèle à l'aide de 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 des appels à l'action du contrôleur MenuView qui crée un nouveau modèle de vue et les transmet à l'partielle.