類似のモデルを使用して一連のアプリケーションを構築しました。
私たちはUserControlsとWebPartsを注入して各ページを構築するいわゆるPageBuilderを持っています。
すべての設定(ページレイアウト、ページコントロール、コントロールの位置など)は、ページ、UserControlsまたはWebPartsのコードを変更する必要はありません。 (一部の機能を追加/変更する必要がない限り)。
私たちも、それはこのように機能など、SQLクエリ、モード、現在のページのような様々な事柄に応じて動作を変更するコントロール内の構成と設定、
Basiclyを持っている:レイアウトテーブルを作成します
- 現在のページの
- 表示するUserControlsおよびWebPartを取得します。
- 各UserControlとWebPartを正しい位置に配置します。
- 各UserControlとWebPartに設定を適用します。
すべてのWebPartsは、カスタムパブリッシャ/サブスクライバイベントモデルによって互いに通信できます。私。 WebPart Aでは、ドロップダウン選択が変更されます。> WebPart Bは、選択した項目のデータを表示します。
このモデルを使用すると、私たちが関与する必要なくレイアウトや動作を設計できる高度に構成可能なアプリケーションを構築できます。
あなたのモデルは私たちのモデルのサブセットであると思われます。私が言うことができるのは、使い方が簡単だということです。開発者の視点と顧客の両方から。
編集:
Basicly私たちのフレームワークは、いくつかのマスターページとPageBuilderを呼び出し、ベースページで構成されています。
各マスターページは、ページ、UserControls、WebPart、Lightboxなどのオブジェクトのさまざまな種類に使用されます。
各aspxページには、UserControlsおよびWebParts用のPlaceHolderが含まれています。このPlaceHolderは、PageBuilderによって作成されます。
私たちのaspxページのUserControl/WebPart PlaceHolderには、必要なコントロールを入力することができます。したがって、aspxページを変更する必要は全くありません。テキストボックスが必要な場合は、これを設定できます。カスタムUserControlまたはWebPartにも同じことが起こります。このようにして、カスタムアプリケーションごとにaspxページを再作成する必要はありませんが、設定を変更するだけで済みます。
は、我々は様々なASPXページの100+のUserControlとWebパーツを持っていますが、ほとんどのaspxページは、に似て:PageBuilderが作成
Partial Class MyPageClass Inherits BasePage
Protected Sub Page_Init(ByVal sender As Object, ByVal e as System.EventArgs) Handles Me.Init
'The following method is in the BasePage and is part of the PageBuilder.
LoadControls()
End Sub
End Class
:私たちのようなものを持っている分離コードで
<%@ Page MasterPageFile="main.master" ... %>
<asp:Content runat="server" ContentPlaceHolderID="Main" ID="MainSection">
<asp:PlaceHolder runat="server ID="UserControlPlaceHolder"></asp:PlaceHolder>
</asp:Content>
レイアウトは、すべてのコントロールとWebPartを正しい位置にロードして追加します。
(コントロールと位置を制御するレイアウトはすべてコンフィギュレーションから取得されます)
次に、PageBuilderは各コントロールとWebPartの設定を適用します。これらの設定も構成可能です。設定は、コントロールの高さなどの単純なものや、「表示モード」(静的、ページ依存、グループ依存など)のような複雑なものにすることができます。
これについて詳しく説明します。
私は、実際には各カスタムアプリケーションで新しいページを再作成したくありません。あなたの "フレームワーク"は、aspxページを変更することなくテキストボックスなどで充実させることができますか? PageBuilderの役割ですか?ビルダーとは誰ですか?詳細を教えてください。 – Thierry