Как я могу использовать RedirectToAction в базовом классе контроллера? - PullRequest
3 голосов
/ 09 декабря 2010

Сейчас я нахожусь в процессе преобразования веб-приложения в веб-сайт MVC 2. У меня есть базовый контроллер, от которого наследуются все остальные мои контроллеры. У меня есть некоторая бизнес-логика, которую я поместил в переопределенный метод Execute, который при необходимости перенаправит пользователя на действие.

Каждое действие контроллера должно запускать ту же логику, и я не хотел вызывать мою функцию в каждом методе действия. Я хотел центральное место для размещения кода. На старом веб-сайте у меня была эта логика в событии загрузки главной страницы, но перевод этой логики в MVC 2 был сложной задачей.

Ответы [ 3 ]

2 голосов
/ 09 декабря 2010

Вам нужно вызвать метод ExecuteResult для возвращенного ActionResult.

Кроме того, вы должны переопределить ExecuteCore, а не Execute. В противном случае вы потеряете ControllerContext.

Кстати, вы должны рассмотреть возможность написания ActionFilter и его динамической загрузки .

0 голосов
/ 09 декабря 2010

Просто поместите ниже код в каждом вашем контроллере. (До строительства)

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);
    //You function here
}

Пожалуйста, не забудьте написать свою функцию в одном классе. если происходит какая-либо модификация, вам не нужно снова менять контроллеры.

0 голосов
/ 09 декабря 2010

В зависимости от того, когда необходимо запустить код, вы можете переопределить методы OnActionExecuting и / или OnActionExecuted в вашем базовом классе контроллера.

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