2009-02-09 6 views
3

Quelle méthode View() est appelée en dernier dans System.Web.Mvc.Controller? Ou devrais-je remplacer chacun d'eux? Je voudrais définir des données de vue dans mon BaseController, qui hérite de System.Web.Mvc.Controller.Quelle vue() pour remplacer dans ASP.NET MVC Controller?

Edit: Je voudrais stocker des informations utilisateur de base comme IsLoggedIn et BasicUserDetails {PermissionLevel, UserName EMAILADDRESS UserId}

Est-ce l'endroit pour le mettre?

Répondre

3

Il y a deux implémentations différentes (en RC 1):

protected internal virtual ViewResult View(string viewName, string masterName, object model) { 

    protected internal virtual ViewResult View(IView view, object model) { 

Tous les autres appellent ces deux. Cependant, je ne présumerais pas que cela va rester comme ça pour toujours. Je devrais imaginer que les versions futures du cadre pourraient changer cela.

Mise à jour: Pour stocker les informations utilisateur, use ASP.NET membership. Il vous indique déjà si l'utilisateur est connecté - Request.IsAuthenticated. Vous pouvez stocker des autorisations personnalisées à l'aide des fonctions d'appartenance normales. Les propriétés de messagerie et similaires sont déjà prises en charge. Et bien sûr, les fournisseurs d'authentification sont connectables, vous pouvez utiliser tout type d'authentification que vous voulez - Windows, domaines, OpenID, etc.

Mise à jour 2: Notez également que ControllerBase a une méthode virtuelle Initialiser vous pouvez remplacer pour configurer les choses dont vous aurez besoin plus tard dans diverses actions.

+0

Merci! Cela m'aidera beaucoup! –

+0

Je suis heureux d'aider, mais je me demande si c'est le meilleur endroit pour définir des données. Cependant, il est difficile de le savoir sans en savoir plus sur les données que vous souhaitez définir lorsque vous connaissez les valeurs. –

8

Vous voudrez probablement remplacer l'une des méthodes "Filtre" sur le contrôleur. Il existe quatre méthodes:

  • OnActionExecuting - Se produit avant une action est exécutée
  • OnActionExecuted - intervient après une première action a été exécuté
  • OnResultExecuting - Survient avant la ActionResult retourné par l'action est exécuté
  • OnResultExecuted - Se produit après que le ActionResult renvoyé par l'action a été exécuté

C'est une meilleure façon d'ajouter des fonctionnalités communes à toutes les actions, car elle est officiellement pris en charge et moins susceptibles de changer

Questions connexes