カスタムアクションフィルター(IActionFilter)の実装から始めます。
public class ProfileRequiredActionFilter : IActionFilter
{
#region Implementation of IActionFilter
public void OnActionExecuting(ActionExecutingContext filterContext)
{
//TODO: Check if the Authenticated User has a profile.
//If Authenicated User doesn't have a profile...
filterContext.Result = new RedirectResult("Path-To-Create-A-Profile");
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
#endregion
}
次に、Global.asaxのRegisterGlobalFiltersメソッド内にアクションフィルターをグローバルに登録します。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ProfileRequiredActionFilter());
}
注:このフィルターをグローバルに適用したくない場合は、代わりにActionFilterAttributeを作成して、コントローラーやアクションメソッドに適用できます...
public class ProfileRequiredAttribute : ActionFilterAttribute
{
#region Implementation of IActionFilter
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
//TODO: Check if the Authenticated User has a profile.
//If Authenicated User doesn't have a profile...
filterContext.Result = new RedirectResult("Path-To-Create-A-Profile");
}
#endregion
}