2010-08-09 41 views
15

我試圖從方法屬性執行重定向。看來工作:從屬性ASP.NET MVC重定向

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

唯一的問題是,重定向它附着在方法結束後執行,同時,我想重定向阻止方法的執行。

任何幫助?由於

回答

29

您可以通過將ActionResult分配給filterContext.Result來阻止執行操作方法。例如:

filterContext.Result = new RedirectResult(urlToRedirectTo); 
-2

您需要添加

filterContext.HttpContext.Response.End(); 

編輯:頂部是錯的底部是正確

這應該工作

filterContext.Result = new RedirectResult(UrlToRedirectTo); 

如果返回一個ActionResult然後它會執行本身的動作本身,所以這應該跳過這個動作。

+0

我認爲他通過在'HttpResponse.Redirect'方法中將'true'作爲第二個參數來結束響應。 – 2010-08-09 10:18:15