から派生したすべてのビューにいくつかの共通プロパティを取得しようとしていますViewModelBase
。ある種のキャッチ22に出くわしたことを除いて...
my の一般的なプロパティは次のViewModelBase
とおりです: User
and Environment
(他にもありますが、この質問ではこれら 2 つで十分です)。
現在、これら 2 つのプロパティを割り当てるグローバル フィルタがあります。ViewModelBase.User
プロパティはBaseController.User
、以前に認可フィルタによって割り当てられた から割り当てられます。
すべての場合にうまく機能しますが、これは次のとおりです。ビジネスロジックに基づいて、承認フィルターがユーザーを「まだ承認されていない」ページにリダイレクトすることがあります。これは次のように行われます。
var notApprovedView = new ViewResult();
notApprovedView.ViewName = "NotYetApproved";
filterContext.Result = notApprovedView;
ただし、この場合、ViewModel には、グローバル フィルターによって割り当てられるはずの共通プロパティがまだないため、実行時例外が発生します。
共通のプロパティを割り当てる必要があり、承認に応じて共通のプロパティの一部が変更される可能性がある状況に対処するための適切な (つまり、ハックではなくベスト プラクティスの) 方法は何ですか?
ありがとう。