我想知道同樣的事情。我搜索谷歌和遇到你的問題加上其他人和答覆似乎都是一樣的。使用IActionFilter.OnActionExecuted
方法。
然而,這不是一個真正的答案,更多的工作,因爲@ randy-burden建議你可以修改/替換結果過濾器中的RedirectToRouteResult操作結果。那麼爲什麼不進行RedirectRoute操作呢?
如果你真的想redirct到IResultFilter.OnResultExecuting
方法內特定的URL,然後你可以做以下任一操作:
RedirectResult redirectResult = new RedirectResult("http://www.google.com");
filterContext.Result = redirectResult;
filterContext.Result.ExecuteResult(filterContext.Controller.ControllerContext);
filterContext.Cancel = true;
base.OnResultExecuting(filterContext);
或者
filterContext.HttpContext.Response.RedirectLocation = "http://www.google.com";
filterContext.HttpContext.Response.StatusCode = 302;
filterContext.Cancel = true;
base.OnResultExecuting(filterContext);
在第一個選項,您手動執行RedirectResult並通過做filterContext.Cancel = true
您告訴框架,您不需要filterContext.Result
運行。在第二個選項中,你基本上是這樣做的,但不是讓RedirectResult配置Http響應,而是自己做。
在我的情況下,我想追加一個額外的查詢參數到重定向url,並告訴框架我想取消重定向操作的結果,然後重定向似乎有點不對,但它確實有效。