問題はかなり単純に思えます...何千人もの人々がすでにこれを理解していると確信しているので、おそらく私はそれを考えすぎています. ユーザーの権限レベルに基づいて、ナビゲーション バーのリンクを表示または非表示にするにはどうすればよいですか? カスタム ロール (MVC ではない) を使用し、その情報をデータベースに保存しています。私が望む効果はとてもシンプルです
_Layout.cshtml
...
@if(user.IsAdmin)
show link
...
これには、Web とここ SO で見つけたいくつかの解決策がありますが、ほとんどは MVC 構造に違反しているようです。
私が見つけた解決策のほとんどは、ビュー内からのデータの調査に関係していましたが、これは悪い習慣であると確信しています。他のソリューションでは、ビュー内からセッション変数を利用して、表示するものと表示しないものを決定します。ビューがコンテンツを決定できないため、これもベストプラクティスに反していませんか?
これを行うと考えることができる唯一の「純粋な MVC」の方法は、IsAdmin
各ビュー モデルに の値を組み込むことです。これは、価値があるよりも面倒に思えます。AJAXを使用して管理ステータスを把握し、ナビゲーションバーにhtml要素を挿入するjavacriptソリューションを作成することも可能だと思います。
これを処理する適切な方法は何ですか?ベスト プラクティスを誤解しているだけですか?