我們使用類似的模型構建了一套應用程序。
我們有一個所謂的PageBuilder,它通過注入UserControls和WebParts來構建每個頁面。
一切都是可配置的(頁面佈局,頁面控件,控制位置等),所以沒有必要更改頁面,用戶控件或任何的WebParts代碼。 (除非需要添加/更改某些功能)。
我們甚至有控制內配置和設置取決於像SQL查詢模式,當前頁面等
Basicly它是這樣工作的各種事情來改變自己的行爲:
- 創建佈局表爲當前頁面。
- 獲取UserControls和WebParts以顯示。
- 將每個UserControl和WebPart放在正確的位置。
- 將設置應用於每個UserControl和WebPart。
所有WebParts都可以通過自定義發佈者/訂閱者事件模型相互通信。即在WebPart A中更改下拉選擇=> WebPart B顯示所選項目的數據。
該模型允許我們構建高度可配置的應用程序,客戶可以設計佈局和行爲,而不需要我們參與。
您的模型似乎是我們模型的一個子集,我只能說這很容易處理。無論是從開發者角度還是從客戶角度來看。
編輯:
Basicly我們的框架包含了一下母版頁和基頁它調用PageBuilder的。
每個主頁面用於不同類型的對象:頁面,用戶控件,Web部件,燈箱等。
每個aspx頁面包含用於UserControls和WebParts的PlaceHolder。這個PlaceHolder由PageBuilder填充。
我們的aspx頁面中的UserControl/WebPart PlaceHolder可以填充任何我們想要的控件。所以不需要改變aspx頁面。如果我們想要一個文本框,我們可以配置它。自定義UserControl或WebPart也是如此。通過這種方式,我們不需要爲每個自定義應用程序重新創建aspx頁面,但只需要更改配置。
我們有100多個用戶控件,併爲的WebParts各種aspx頁面,但大多數aspx頁面類似於:
<%@ Page MasterPageFile="main.master" ... %>
<asp:Content runat="server" ContentPlaceHolderID="Main" ID="MainSection">
<asp:PlaceHolder runat="server ID="UserControlPlaceHolder"></asp:PlaceHolder>
</asp:Content>
在代碼隱藏
,我們有這樣的:
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
的PageBuilder創建佈局然後加載並添加所有控件和WebParts在正確的位置。
(佈局,其控制和控制位置都從配置中獲取)。
然後,PageBuilder將應用每個Control和WebPart的設置。這些設置也是可配置的。設置可以像控件的高度或「顯示模式」(靜態,頁面依賴,組依賴等)這樣的更復雜的事情一樣簡單。
希望這可以更詳細地解釋它。
我其實不想在每個自定義應用程序中重新創建新頁面。您的「框架」是否允許使用例如文本框豐富aspx頁面而不需要修改它?它是否是PageBuilder的角色?誰稱之爲Builder?你能提供一些細節嗎? – Thierry 2009-11-20 08:12:20