私はASP.NET MVCアプリケーションを開発しています。どこのページのコンテンツも存在していて、ページに表示されていればデータベースから取得できます。コンテンツアクセスロジックをBaseControllerに配置することをお勧めしますか?
これは、技術者以外の人がソースコード(例:ビュー)に移動して物を変更することなくコンテンツを編集できるようにするためです。
私がこれをやっているのは、各コントローラがベースコントローラから派生していることです。ベースコントローラは 'OnActionExecuted'をオーバーロードし、この機会に現在のアクション/コントローラに割り当てられているコンテンツをすべて取得します。
アクションが 'ContentViewModel'から派生したViewModelを返した場合、ViewModelの 'Text'プロパティにデータベースのテキストが入力されます。
そして、テキストはビューによってレンダリングされます。
このデザインに何らかの弱点がありますか?
ベースコントローラを持つよりも、ビューから呼び出すコンテンツをプルするためのHtmlHelper拡張機能を使用した方が良いでしょうか?
これは、私自身のベースコントローラを持っていると 'Html.RenderAction'を呼び出すのを妨げているようです。これは、指定されたコントローラが 'System.Web.Mvc.Controller'から直接継承することを期待しているようです。