ASP.NET MVC 3(Razor)アプリケーションでの作業。これは、主にUGC(ユーザー生成コンテンツ)に関係しています。
私は「Q&A」エリアに取り組んでいます-ユーザーが質問したり、他の人が答えたり、投票したりできる場所です。
そのため、私は、ユーザーの役割やその他の要因に基づいて、ユーザーが任意のページで実行できる操作を処理するためのクリーンな方法を見つけようとしています。
「質問の詳細ページ」(Stack Overflowのこのページのような)のシナリオを考えてみましょう。
すべての(認証された)ユーザーは次のことができます。
- 質問/回答に投票する
- 答え
質問の所有者は次のことができます。
- 編集
- 消去
- 答えをマークする
などなど。
これで、QuestionViewModel
この特定のビューの質問と関連する回答を表示するために使用されるがあります。
AutoMapperを使用して作成します。
利用可能な操作に基づいて、ページに「スティッキー」(ハイパーリンクなど)を表示するにはどうすればよいですか?
私の現在の考え方は次のとおりです。
- 列挙型を作成します:(
QuestionOperation
回答、編集、無効化、投票、回答など) IEnumerable<QuestionOperation>
タイプのプロパティをViewModelに追加します- このプロパティをアクションメソッド(HTTP GET)で設定し、ユーザーが認証されているかどうか、およびユーザーが含まれているロールを確認します。
- 次に、エディターテンプレートを使用して、各操作をハイパーリンクとしてレンダリングします。
Html.ActionLink
それはクリーンなアプローチと見なされますか?それとも誰かがより良いアプローチを提案できますか?
私はこれQuestionViewModel
を3ページで再利用していることを覚えておいてください:
- 質問詳細ページ
- 「質問する」ページ
- 「質問の編集」ページ
したがって、これらの操作はページ/ユーザーに依存するため、AutoMapperでは実際には実行できません。