私は現在、かなり広範なメインレイアウトページがあるMVCサイトで作業しています。これはデータベースからのデータに依存しており、データベースには、レイアウトに何を含めるかなどの固有のロジックが含まれています。
私のコントローラーアクションのほとんどは、このレイアウト内でレンダリングされます。これをどうやって動かすのかわかりません。Webフォームのページをマスターするために使用されるため、すべてのロジックはマスターページにあります。一般的なレイアウトロジックを実現するためのメカニズムがいくつかありますが、それを実現するためのベストプラクティスの方法を探しています。
オプションは次のとおりです。
- すべてのコントローラーアクションでロジックを複製します(実際にはオプションではありません)
- ロジックを別のクラスに抽出し、コントローラーアクションから呼び出します
- すべてのコントローラーは、OnActionExecutingメソッドをオーバーライドするベースコントローラーから継承します。これにより、ロジックが実行され、TempDataに必要なデータが返されます。
- cshtmlの「RenderAction」を使用して必要なコントローラーアクションを呼び出し、レイアウトをより小さな部分ビューに抽出します
私に開かれた他のオプションや推奨事項はありますか?