Question

J'adore MVC mais je ne vois pas comprendre comment vous signifions implémenter les contrôles des utilisateurs. Si j'ai des vues multiples chacune avec les détails du panier, comment puis-je encapsuler la vue et le code du panier de magasinage afin que je n'ai pas à renvoyer les données du panier avec chaque contrôleur ViewData?

Était-ce utile?

La solution

Vous devez renvoyer les données du panier dans chaque action du contrôleur qui renvoie la vue qui utilise le contrôleur utilisateur du panier. Mais il existe des méthodes pour éviter la répétition du code ici. Vous pouvez décorer la méthode d'action avec une action d'action personnalisée qui injectera les données appropriées dans un événement ONAxctionExecuté, ou vous pouvez ajouter des données de panier au dictionnaire ViewData dans la méthode d'initialisation du contrôleur de base, puis l'accède au contrôle avec ViewData ["Magic-String"] ou créer Méthode d'extension sur htmlhelper pour éviter les cordes magiques.

Autres conseils

De cette Page MSDN:

Une vue partielle vous permet de définir une vue qui sera rendue dans une vue parent. Les vues partielles sont implémentées sous forme de contrôles utilisateur ASP.NET (.ASCX).

Écrivez votre vue de panier dans une vue partielle. Dans une vue, vous appelez Html.RenderPartial("PartialNameHere") Pour rendre cela à n'importe quel endroit de la page que vous l'avez appelé. Comme les vues, vous pouvez avoir des vues partielles fortement typées afin que vous puissiez passer dans un modèle de type que vous choisissez.

Veuillez noter ce qui suit (également à partir du lien MSDN ci-dessus; la mine de l'accent):

Lorsqu'une vue partielle est instanciée, elle obtient son posséder Copie de l'objet ViewDatadictionnaire disponible pour la vue parent. La vue partielle a donc accès aux données de la vue parent. Cependant, si la vue partielle met à jour les données, ces mises à jour affectent uniquement l'objet ViewData de la vue partielle. Les données de la vue parent sont ne pas modifié.

Les autres réponses sont exactement bonnes, mais il y a une deuxième option. Vous pouvez rendre votre vue partielle à la suite d'un appel ajax à une action de contrôleur dédiée à votre vue partielle. De cette façon, votre point de vue partiel doit simplement faire face à un modèle qui a des données qui ne se soucient que.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top