承認されていないユーザーが使用できる一連の機能と、承認されたユーザーが使用できる拡張された一連の機能を持つ MVC ビューがあるとします。現在、ビューをマークアップすることでこれを実装しています
@if(User.IsInRole(...)) {...}
ビューファイルのいくつかの場所にあります。認証されたユーザーが認証されていない機能を超えて実行できることが 2 つまたは 3 つだけだったとき、これは大したことではありませんでしたが、今では「ダッシュボード」タイプのページのいたるところにこれがあります。なんかぐちゃぐちゃになりそうです。
これを実装するためのよりクリーンでエレガントな方法はありますか? ビューモデルを使用しています。役割に基づいて異なるビューモデル/ビューを使用する必要があるかどうか疑問に思っていますが、異なるビューモデルを使用すると、維持するのがより難しくなるようです。このためのベストプラクティスが何であるかはわかりませんが、私はアイデアを受け入れています。
編集
私が行っていることの一例: マネージャーがレコードを編集できるようにするリスト/テーブルがいくつかあるので、コードは余分な
<td>
マネージャーが許可したアクション用。別の使用例: マネージャーがサインインすると、従業員の名前が単なるテキストではなくアクションリンクになります。