9

私が取り組んでいるMVC4プロジェクト全体にベースコントローラーを使用することを考えています。私はそれについてオンラインで矛盾する見解を見つけましたが、それがベストプラクティスに反しているのか、それとも個人的な好みの問題なのかはよくわかりません。

これは、やらないと言っているstackoverflowの投稿です

これは、有害な影響がないようにそれを行う方法を示した投稿ですここここでも、彼らはその使用法を説明していますが、それが悪い習慣であるとか、将来の問題につながる可能性があると誰も実際に指摘していません。

では、MVC 4プロジェクトでいくつかのベースコントローラーを使用することについて、実際にはどのような見方がありますか?良い?悪い?

編集

また、ベースコントローラーを使用する当面の目標は、1つのコントローラーで承認を実行できるようにし、すべてのコントローラーが承認属性を持つ必要がないようにすることです。役割ごとに個別のベースコントローラーを作成します。役割が変更されることは決してないので、別の役割のために別のベースコントローラーを作成する必要はありません。コントローラーを設計するこの方法についてどう思いますか?

御時間ありがとうございます。

4

2 に答える 2

4

あなたが参照している投稿が言っていることは絶対に真実ですが、それはベースコントローラーを使用しない理由ではありません。実際、コモディティのために、一部のASP.NETMVCアプリケーションでベースコントローラーを使用しています。

これはもはやお勧めできません:

[Authorize]属性を1回適用するベースコントローラーを用意するのが一般的な方法であり、問​​題はありません。

MVC3以降、次のようなグローバルアクションフィルターを登録できます。

GlobalFilters.Filters.Add(new MyAuthorizeAttribute());

于 2013-03-14T09:20:32.420 に答える
3

プリンシパルのオーバーライドなどを処理するときに、以前にベースコントローラーを使用しましたUser(アイデアを説明する私の古い質問については、ここを参照してください:ベースコントローラーASP.NET MVC 3のこのカスタムプリンシパルはひどく非効率的ですか?)。

正直なところ、これ以上の方法は考えられなかったので、このようなシナリオでは、ベースコントローラーを使用するのが良いと思います。

[Authorize(Roles="whatever")]コントローラーを装飾するだけでかなり単純(そしてコードが少ない)であり、何が起こっているのかを正確に確認するのが簡単になるため、承認の役割ごとに異なるベースコントローラーを使用することはおそらくないでしょう。

カスタムのAuthorizeAttributeを検討する価値があるかもしれません。

于 2013-03-14T09:36:41.160 に答える