ASP.NET MVC从属性重定向

时间:2010-08-09 10:11:06

标签: c# .net asp.net-mvc asp.net-mvc-2

我正在尝试从方法属性执行重定向。它似乎有效:

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

唯一的问题是重定向是在它附加到的方法结束后执行的,而我想重定向以防止执行该方法。

有任何帮助吗?感谢

2 个答案:

答案 0 :(得分:30)

您可以通过将ActionResult分配给filterContext.Result来阻止执行操作方法。例如:

filterContext.Result = new RedirectResult(urlToRedirectTo);

答案 1 :(得分:-2)

您需要添加

filterContext.HttpContext.Response.End();

编辑:顶部错误,底部是正确的

这应该有效

filterContext.Result = new RedirectResult(UrlToRedirectTo);

如果你返回一个ActionResult,那么它会被动作本身执行,所以这应该跳过动作。