2009-09-09 14 views
0

私はASP.NET MVCアプリケーションを開発しています。どこのページのコンテンツも存在していて、ページに表示されていればデータベースから取得できます。コンテンツアクセスロジックをBaseControllerに配置することをお勧めしますか?

これは、技術者以外の人がソースコード(例:ビュー)に移動して物を変更することなくコンテンツを編集できるようにするためです。

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

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

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

このデザインに何らかの弱点がありますか?

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

これは、私自身のベースコントローラを持っていると 'Html.RenderAction'を呼び出すのを妨げているようです。これは、指定されたコントローラが 'System.Web.Mvc.Controller'から直接継承することを期待しているようです。

答えて

1
  1. ActionFiltersをコンテンツの取得に使用しないでください。

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

  3. HTMLヘルパーを使用してコンテンツを取得することはできません。これらは、提供されたデータが事前に埋め込まれたUI要素をレンダリングするためのものです。

任意のページのコンテンツは、ほとんどのアプリケーションがどのように動作するか、基本的だデータベース

から引き出すことができるアプリケーション。

これは、技術者以外の人がソースコード(例:ビュー)に移動して物を変更することなくコンテンツを編集できるようにするためです。

技術者以外の人がコンテンツを編集するには、適切なUIが必要です。プロジェクトの基礎となる技術とは無関係に、技術者でない人はコードを編集することは決してありません。

私は変なことをしないでくださいが、物事を明確にすることをお勧めします。ビューがレンダリングするモデルにデータを供給するビジネスレイヤーを実装します。他のユーザーがコンテンツを編集するためのUIを作成します。

関連する問題