我正在尝试从方法属性执行重定向。它似乎有效:
public class MyAttribute: ActionFilterAttribute {
[..]
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
[..]
filterContext.HttpContext.Response.Redirect(urlToRedirectTo, true);
[..]
唯一的问题是重定向是在它附加到的方法结束后执行的,而我想重定向以防止执行该方法。
有任何帮助吗?感谢
答案 0 :(得分:30)
您可以通过将ActionResult分配给filterContext.Result来阻止执行操作方法。例如:
filterContext.Result = new RedirectResult(urlToRedirectTo);
答案 1 :(得分:-2)
您需要添加
filterContext.HttpContext.Response.End();
编辑:顶部错误,底部是正确的
这应该有效
filterContext.Result = new RedirectResult(UrlToRedirectTo);
如果你返回一个ActionResult,那么它会被动作本身执行,所以这应该跳过动作。