ASP.NET MVC перенаправление с атрибута - PullRequest
16 голосов
/ 09 августа 2010

Я пытаюсь выполнить Redirect из атрибута метода.Кажется, это работает:

public class MyAttribute: ActionFilterAttribute {
    [..]
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        [..]
        filterContext.HttpContext.Response.Redirect(urlToRedirectTo, true);
        [..]

Единственная проблема заключается в том, что перенаправление выполняется после окончания метода, к которому он подключен, в то время как я хотел бы, чтобы перенаправление предотвращало выполнение метода.

Любая помощь?Спасибо

Ответы [ 2 ]

30 голосов
/ 09 августа 2010

Вы можете предотвратить выполнение метода действия, назначив ActionResult для filterContext.Result. Например:

filterContext.Result = new RedirectResult(urlToRedirectTo);
0 голосов
/ 09 августа 2010

Вам нужно добавить

filterContext.HttpContext.Response.End();

РЕДАКТИРОВАТЬ: Верх неверный, нижний правый

это должно работать

filterContext.Result = new RedirectResult(UrlToRedirectTo);

если вы возвращаете ActionResult, он выполняется вместо самого действия, поэтому это действие должно быть пропущено.

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