0

問題はかなり単純に思えます...何千人もの人々がすでにこれを理解していると確信しているので、おそらく私はそれを考えすぎています. ユーザーの権限レベルに基づいて、ナビゲーション バーのリンクを表示または非表示にするにはどうすればよいですか? カスタム ロール (MVC ではない) を使用し、その情報をデータベースに保存しています。私が望む効果はとてもシンプルです

_Layout.cshtml

...

@if(user.IsAdmin)
    show link
...

これには、Web とここ SO で見つけたいくつかの解決策がありますが、ほとんどは MVC 構造に違反しているようです。

私が見つけた解決策のほとんどは、ビュー内からのデータの調査に関係していましたが、これは悪い習慣であると確信しています。他のソリューションでは、ビュー内からセッション変数を利用して、表示するものと表示しないものを決定します。ビューがコンテンツを決定できないため、これもベストプラクティスに反していませんか?

これを行うと考えることができる唯一の「純粋な MVC」の方法は、IsAdmin各ビュー モデルに の値を組み込むことです。これは、価値があるよりも面倒に思えます。AJAXを使用して管理ステータスを把握し、ナビゲーションバーにhtml要素を挿入するjavacriptソリューションを作成することも可能だと思います。

これを処理する適切な方法は何ですか?ベスト プラクティスを誤解しているだけですか?

4

1 に答える 1

0

たぶん、レイアウト内で部分ビューを使用しますか? このようなもの:

@Html.Partial(actionName: "NavigationLinks", controllerName: "Navigation")

そうすれば、MVC の規則を維持できます。ビューはスタンドアロンにすることができ、ナビゲーション コントローラーは (セッション データから、またはどこからでも) モデルを注入します。

于 2013-09-30T22:31:48.437 に答える