我建立了以下過濾器:實施IActionFilter
public class TestflowFilter : FilterAttribute, IActionFilter
{
public void OnActionExecuted(ActionExecutedContext filterContext)
{
var profileId = int.Parse(ClaimsPrincipal.Current.GetClaimValue("UserId"));
var appId = int.Parse(filterContext.RouteData.Values["id"].ToString());
if (profileId != 0 && appId != 0)
{
if (CheckIfValid(profileId, appId))
{
// redirect
filterContext.Result = // url to go to
}
}
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
我其實只需要OnActionExecuted
,但由於IActionFilter
是一個接口我必須實現他們倆。它是確定要離開OnActionExecuting
空白,如果我什麼都不需要發生,或者我需要調用MVC始終運行基本版本?
同樣在OnActionExecuted
方法如果CheckIfValid
是true
我重定向用戶,但如果不是,我什麼都不做。沒關係,或者我需要在filterContext
上設置一些屬性。
它不需要填充'OnActionExecuting'的代碼。在'OnActionExecuted'的情況下,它是確定不分配值filterContext.Result,這意味着asp.net繼續正常的生命週期管道。 – Balde