0

私は ASP.NET MVC アプリケーションを開発しています。このアプリケーションでは、任意のページのコンテンツをデータベースから取得して (存在する場合)、ページに表示できます。

これは、非技術者がソース コード (ビューなど) にアクセスして変更することなくコンテンツを編集できるようにするためです。

私がこれを行っている方法は、各コントローラーがベースコントローラーから派生することです。ベース コントローラーは 'OnActionExecuted' をオーバーロードし、この機会を利用して、現在のアクション/コントローラーに割り当てられているコンテンツを取得します。

アクションが「ContentViewModel」から派生した ViewModel を返す場合、ViewModel の「Text」プロパティにデータベースからのテキストを設定します。

そして、テキストはビューによってレンダリングされます。

このデザインの弱点が見えますか?

基本コントローラーを使用するよりも、ビューから呼び出すコンテンツをプルするための HtmlHelper 拡張機能を使用した方がよいでしょうか?

私がこれを尋ねている理由の 1 つは、独自のベース コントローラーを使用すると、指定されたコントローラーが「System.Web.Mvc.Controller」から直接継承されることを期待しているように見える「Html.RenderAction」の呼び出しに干渉するように見えることです。

4

1 に答える 1

1
  1. コンテンツをプルするために ActionFilters を使用しないでください。

  2. コントローラーは、コンテンツをプルするために使用するのではなく、単純なロジックを適用して着信要求をディスパッチするためにのみ使用する必要があります。

  3. HTML ヘルパーを使用してコンテンツをプルしないでください。これらは、提供されたデータが事前に入力された UI 要素をレンダリングするためのものです。

任意のページのコンテンツをデータベースから取得できるアプリケーション

これは基本的に、ほとんどのアプリケーションが動作する方法です。

これは、非技術者がソース コード (ビューなど) にアクセスして変更することなくコンテンツを編集できるようにするためです。

非技術者がコンテンツを編集できるように、適切な UI が必要です。プロジェクトの基礎となるテクノロジーとは関係なく、非技術者がコードを編集することは決して想定されていません。

奇妙なことは何もせず、物事を明確にすることをお勧めします。ビューがレンダリングするモデルにデータを提供するビジネス レイヤーを実装します。他の人がコンテンツを編集できるように UI を作成します。

于 2009-09-28T11:17:58.440 に答える