ASP.NET MVC перенаправляет из атрибута

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

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

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

Любая помощь? Благодаря

Ответы

Ответ 1

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

filterContext.Result = new RedirectResult(urlToRedirectTo);

Ответ 2

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

filterContext.HttpContext.Response.End();

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

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

filterContext.Result = new RedirectResult(UrlToRedirectTo);

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