Какой View () переопределить в ASP.NET MVC Controller? - PullRequest
3 голосов
/ 10 февраля 2009

Какой метод View () вызывается последним в System.Web.Mvc.Controller? Или я должен переопределить каждый? Я хотел бы установить некоторые данные представления в моем BaseController, который наследуется от System.Web.Mvc.Controller.

Edit: Я хотел бы хранить базовую информацию о пользователях, такую ​​как IsLoggedIn и BasicUserDetails {PermissionLevel, UserName, EmailAddress, UserId}

Это место для установки?

Ответы [ 2 ]

8 голосов
/ 10 февраля 2009

Возможно, вы захотите переопределить один из методов «Filter» на контроллере. Существует четыре таких метода:

  • OnActionExecuting - происходит до действие выполнено
  • OnActionExecuted - Происходит после того, как действие было исполнено
  • OnResultExecuting - происходит перед ActionResult, возвращенным Действие выполнено
  • OnResultExecuted - происходит после ActionResult, возвращаемый действием был исполнен

Это лучший способ добавить функциональность, общую для всех действий, поскольку она официально поддерживается и с меньшей вероятностью будет изменена

3 голосов
/ 10 февраля 2009

Существует две разные реализации (в RC 1):

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

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

Все остальные зовут этих двоих. Однако я бы не стал предполагать, что так будет всегда. Я должен был представить, что будущие выпуски фреймворка могут изменить это.

Обновление : Для хранения информации о пользователе используйте членство ASP.NET . Это уже говорит вам, если пользователь вошел в систему - Request.IsAuthenticated. Вы можете хранить пользовательские разрешения, используя обычные функции членства. Свойства электронной почты и тому подобное уже поддерживаются. И, конечно, провайдеры аутентификации являются подключаемыми, поэтому вы можете использовать любой тип аутентификации, который вам нужен - Windows, домены, OpenID и т. Д.

Обновление 2 : обратите внимание также, что ControllerBase имеет виртуальный метод Initialize, который вы можете переопределить, чтобы настроить вещи, которые вам понадобятся позже в различных действиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...