響應所以基本上我有一個自定義ActionFilterAttribute
和它我重寫一個方法,它看起來像這樣ASP.NET MVC 4重定向在ActionFilterAttribute
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
bool shouldEnter = true;
string redirUrl = "SomeController/SomeAction";
// some checks here which change the value of shouldEnter;
if (!shouldEnter)
{
filterContext.HttpCOntext.Response.Redirect(redirUrl);
}
}
這是一個非常簡單的實現的ActionFilterAttribute
。基本上我檢查一些東西,而不是決定讓那個人進去。如果我不讓他進入,那麼我應該將他重定向到某個URL,並使用上述OnActionExecuting
方法執行此操作。但事情是,在它進入someUrl之前,他所要求的行動首先被執行。假設我已請求~/SomeController/YouShouldNotEnterHere
的頁面,並且此操作具有該屬性。 OnActionExecuting
被調用,並且我認爲redirUrl
(在OnActionExecuting
方法中提到)的相應動作將被調用,因爲我將Response
重定向到它,但是不,首先調用/ SomeController/YouSnouldNotEnterHere的對應Action實際上在瀏覽器中繪製,但動作仍然消耗時間),並且調用(並在瀏覽器中繪製)redirUrl
的相應動作。這是一種錯誤嗎?或者這應該以這種方式工作?反正我有什麼可以做T
可能重複[ASP.NET MVC:Response.Redirect(url,TRUE)不會停止請求處理](http://stackoverflow.com/questions/2187323/asp-net-mvc-response-redirecturl-true-does-not-停止請求處理) – CodeCaster
'filterContext.Result = new RedirectResult {Url = redirUrl};' – felickz
@felickz實際上幫助編寫答案所以我可以標記它。 – Dimitri