Question

Existe-t-il un bon moyen d’attribuer ViewData à des pages maîtres imbriquées? Par exemple, dans ma page principale de premier niveau, je pourrais avoir des informations sur l'utilisateur connecté. J'ai également une page maître imbriquée qui est affichée lorsque l'utilisateur est sur une page de département. Je veux que ces données soient disponibles UNIQUEMENT sur les pages des départements.

Voilà à quoi ça ressemble:

Top Level Master Page - Includes ViewData["userData"]
    |
    |
    ---> Nested Master Page - Includes ViewData["departmentalData"]

Ainsi, chaque fois que ma vue utilise la page maître imbriquée, elle inclut à la fois ViewData [" userData "] et ViewData [" departmentalData "]. Mais si je n'utilise que la page maître de niveau supérieur, alors je n'ai que ViewData [" userData "]. Est-ce possible?

Était-ce utile?

La solution

Si vous insistez pour utiliser ViewData en tant que support de données pour les pages maîtres (au lieu d'utiliser Html.RenderAction (...) du projet MvcContrib que j'utiliserais probablement), alors si vous pouvez identifier dans quels cas le masterpage sera utilisé, vous pouvez configurer un ActionFilter pour saisir les données nécessaires dans ViewData ["quotalData"].

Autres conseils

Une possibilité consiste à écrire une méthode d’extension sur ViewPage et ViewMasterPage pour obtenir les données dont vous avez besoin. Je ne suis pas sûr, mais je pense que c'est ce que Rob Conery a fait dans son package Commerce.MVC . Regardez cela.

Nous avons eu le même problème. Jusqu'à présent, nous avons mis au point une classe de base pour tous les contrôleurs et une méthode protégée pour générer ViewData. Nous l'appelons de toutes les actions qui utilisent cette page maître spécifique.

Je vais certainement suivre cette question pour voir ce que les autres ont proposé.

Il existe un concept de sous-contrôleurs pour MVC (je ne sais pas s'il est toujours présent et se frayera un chemin dans le cadre MVC). Vous pouvez le trouver dans le projet mvc contrib sur codeplex. Vous trouverez une description ou un article de blog ici ...

http://mhinze.com/subcontrollers-in-aspnet-mvc/

et la transmission des objets à ce sous-contrôleur est abordée ici ...

http://mhinze.com/passing-objects-to-subcontrollers/

Ceci n'est pas basé sur les pages maîtres mais pourrait vous aider ...

Tant que votre contrôleur définit les bonnes ViewData pour la page à afficher, le nombre de pages maîtres utilisées n'a aucune importance. Ou est-ce que je manque quelque chose?

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