Я попробовал два способа: Response.Redirect (), который ничего не делает, а также вызов нового метода внутри базового контроллера, который возвращает ActionResult и возвращает RedirectToAction () ... ни одна из этих работ.
Как я могу сделать перенаправление из метода OnActionExecuting?
c#
asp.net-mvc
onactionexecuting
CloudMeta
источник
источник
new RedirectResult(url)
вас также можно использоватьnew RedirectToAction(string action, string controller)
. Возможно, это было добавлено в MVC после того, как вы опубликовали свой ответ. Ваше решение в любом случае поставило меня на правильный путь.new
) RedirectToAction:filterContext.Result = RedirectToAction(string action, string controller);
Это можно сделать и так:
источник
Создать отдельный класс,
Затем, когда вы создаете контроллер, вызывайте эту аннотацию как
источник
RouteValueDictionary
конструктора, поскольку он отражает маршрутизацию в другом месте в MVC. +1Если перенаправленный контроллер наследуется от того же места,
baseController
где мы переопределяемOnActionExecuting
метод, вызовем рекурсивный цикл. Предположим, мы перенаправили его на действие входа контроллера учетной записи, затем действие входа вызоветOnActionExecuting
метод и снова и снова будет перенаправлен на одно и то же действие входа в систему ... Поэтому мы должны применитьOnActionExecuting
метод check in, чтобы проверить, поступил ли запрос от того же контроллера, если так что тогда не перенаправляйте это действие входа снова. вот код:защищенное переопределение.
источник