2010-06-11 2 views
0

J'ai développé mes propres objets d'utilisateurs et de rôles personnalisés en utilisant ActiveRecord qui n'élargissent PAS les fournisseurs Asp.Net par défaut et je ne peux donc pas obtenir l'utilisateur à partir de HttpContext. Je peux créer un htmlhelper personnalisé pour rendre les menus mais est-ce que mes vues devraient rendre le menu ou la page maître?Doit afficher les menus de rendu ou les gabarits

Si c'est la page maître, comment puis-je passer au htmlhelper personnalisé des choses comme l'utilisateur actuel, car certains éléments de menu dépendent des rôles d'utilisateur.

En outre, comment puis-je détecter quel contrôleur est affiché dans mes pages maîtres?

Répondre

2

1) Si votre fonctionnalité de menu est censée exister sur plusieurs pages, il est logique de la placer dans la page maître. Si non, alors la vue normale.

2) Un choix populaire consiste à faire en sorte que tous vos ViewModels héritent d'une classe de vue de base, puis votre page maître l'utilise. Exemple:

System.Web.Mvc.ViewMasterPage<ViewBase> 
System.Web.Mvc.ViewPage<MyViewModel> 

public class MyViewModel : ViewBase { } 

3) Vous pouvez extraire le contrôleur spécifique des données de route. Toutefois, si vous avez besoin de fonctionnalités spécifiques pour certains contrôleurs, je suggère simplement d'utiliser une page maître différente pour ces vues plutôt que d'essayer de faire en sorte que toutes vos vues utilisent la même page maître.

+0

Votre suggestion a bien fonctionné car elle m'a obligé à aller avec des modèles de vue typés complètement forts pour toutes mes vues. – Roman

1

En général, tous les contrôles ASP.NET (que ce soit WebForms ou MVC) doivent contrôler leur propre état.

Dans le cas de la gestion de la navigation, je dirais créer un .ASCX (vue partielle) et placez-le sur votre page maître. Laissez la vue partielle contrôler comment elle est affichée en fonction de HttpContext.

+0

Merci pour cela. J'ai fini par créer une vue partielle qui s'occupera de rendre mes menus. C'est très doux. – Roman

Questions connexes