2013-03-07 14 views
7

アプリケーションを.NETに移行中です。主な目標の1つは、クライアントごとにアプリケーションに変更を加えることですが、ソースコードには変更を許可しないことです。私たちはインターフェイスにプログラミングし、Dependency Resolver(ベース登録を無効にするオプションを持つ)とMEFを使用して、コアフレームワークでこれを解決しました。ASP.NET MVCビューの実行時の拡張性

ビュー(クライアントに表示されるUI)では、テンプレートは静的に見え、クライアントが画面に新しいフィールドを追加する場合は、ビュー自体を変更する必要があるようです。

私が考えることができるのは、viewengineの検索パスを変更することだけです。これにより、ベースのコピーが許可され、ベースへの変更が選択されます。これはコードのコピーであるので、これは本当に好きではありません。

もう1つの方法は、HTMLを出力する他のオブジェクトのコンテナであるクラスを作成することです。基本的にはPageObject、LabelObject、InputObject..ectがあり、レンダリングを呼び出してHTMLを出力できます。彼らはクラスなので、スライスインポイントを与えるアプリケーションの残りの部分と同じ方法論を使用できます。このルートに進むには、実際にレンダリングにビューエンジンを使用せず、すべての部分ビューを結合するだけです。一種のように思われる。

この目標を達成する別の方法、または基本ビューに触れることなくクライアントのカスタマイズを可能にする目的で使用できる別のビューエンジンはありますか?私はHTMLがオブジェクトではないことを知っていますが、HTMLを扱い、カスタマイズを許可するときに、ASP.NET WebFormsとASP.NET MVCの間に何かがなければならないようです。

答えて

2

入力とラベルとしてレンダリングされるもののコレクションである、厳密に型指定された部分的なビューまたはテンプレート(要件に基づいたDisplayTemplateまたはEditorTemplate)を作成します。クライアントが永続化されたコレクション(データベース内)からアイテムを追加/削除することを許可し、組み込みのViewEngineを使用して問題を解決します。

+0

ウェブサイトをどのように美しく見せることができますか?私は個人的には、displaytemplateまたはeditortemplateがすばらしく見えるとは思っていません。私はディスプレイを駆動するためにデータベースを使用することができましたが、もう一度私は本当にviewengineを使用していないでしょう。 – CharlesNRice

+0

_nice_だと思います。 CSSを使用してスタイルを設定することもできます。 – jrummell