実装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