59 votes

MVC, Html.Partielle ou Html.Action

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.

117voto

Tommy Points 17332

Voici ce que je considère comme mes lignes directrices sur l'utilisation de Html.Action ou Html.Partielle

Html.Partielle

  1. L'Utilisation De Code Html.Partielle quand vous vous êtes rendu du contenu statique ou,
  2. Si vous allez passer des données à partir de ce Dernier qui est envoyé à partir de la vue principale

Html.Action

  1. 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.

67voto

Kivin Points 2168

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X