私は ASP.NET MVC アプリケーションを開発しています。このアプリケーションでは、任意のページのコンテンツをデータベースから取得して (存在する場合)、ページに表示できます。
これは、非技術者がソース コード (ビューなど) にアクセスして変更することなくコンテンツを編集できるようにするためです。
私がこれを行っている方法は、各コントローラーがベースコントローラーから派生することです。ベース コントローラーは 'OnActionExecuted' をオーバーロードし、この機会を利用して、現在のアクション/コントローラーに割り当てられているコンテンツを取得します。
アクションが「ContentViewModel」から派生した ViewModel を返す場合、ViewModel の「Text」プロパティにデータベースからのテキストを設定します。
そして、テキストはビューによってレンダリングされます。
このデザインの弱点が見えますか?
基本コントローラーを使用するよりも、ビューから呼び出すコンテンツをプルするための HtmlHelper 拡張機能を使用した方がよいでしょうか?
私がこれを尋ねている理由の 1 つは、独自のベース コントローラーを使用すると、指定されたコントローラーが「System.Web.Mvc.Controller」から直接継承されることを期待しているように見える「Html.RenderAction」の呼び出しに干渉するように見えることです。