0

Windows認証を使用してMVCイントラネットアプリを作成しています。アクセスされるデータは年固有であるため、クエリを実行する前に設定する必要がある、セッションなどのグローバル変数を設定する方法が必要です。

ユーザーがWindowsのログイン資格情報を介してすでに承認されているため、ユーザーに強制的にログインさせる方法を見つけることができませんでした。そのため、属性を使用して強制的にログインするのは問題があるようです。

ユーザーが特定のページに移動してデータを取得し、年を定義せずに少し大混乱を引き起こす可能性があることがわかりました。

私がやりたいのは、年変数がまだ設定されていない場合に、ユーザーに年選択ページを表示して、アクセスしたい年を選択するように強制することです。

関連する質問を確認しましたが、現在の難問に対する答えが得られていないようです。

4

1 に答える 1

1

カスタム ActionFilter を作成して、すべてのコントローラーに配置できます (もちろん、年を選択する必要があるアクションには適用されません)。年が選択されていない場合は、年を選択できるコントローラー/アクションにリダイレクトします。

public class CheckYearAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(<YEAR IS NOT SET>)//redirect
        {
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary {{ "Controller", "YourController" },
                                      { "Action", "YourAction" } });
        }

        base.OnActionExecuting(filterContext);
    }
}
于 2012-07-06T14:50:12.043 に答える