問題:
假設您有一個Aspx頁面,其包含一個名為"Add New" 的Button,而您則想讓用戶每次點擊Button,PostBack到Server,然後創建一個用 戶控件的實列,並最終想動態的添加到該頁面的ControlCollections中。
之所以我說用用戶控件,是因為我們很容易把許多的控件組織到一個單獨的控件 中,添加的時候,我們只需把該用戶控件添加到頁面上就可以了。
設計 解決方法:
我所想到的解決該問題的方法是在Aspx頁面上放一個 PlaceHolder容器控件,該控件可以把所有的控件動態的添加到裡面。另外,我們 還設計一種"Page Controller"模式,讓所有操作動態添加控件的方法 都放到一個名為BasePage基類中,也就意味著,如果我們的一些Aspx頁面想動態 的添加一些控件,我們只需從這個BasePage類繼承。
最後,我們也必須考 慮在一個Aspx頁面上不僅僅包含一個PlaceHolder,反之,您可以把控件動態的添 加到任何的地方
最終解決方法
首先在Vs 2008創建一個 WebSite.
創建完之後,添加一個BasePage類,然後把下面的代碼添加到其 中
Code
// Holds the Session Key to store the added-controls on page
private const string SESSION_CONTAINERS_KEY = "Controls_In_Container";
// Holds the path to a user control
private const string PATH_TO_CONTROL = "~/App_Controls/{0}";
該SESSION_CONTAINERS_KEY將被用做Session 的值來保存 ,而PATH_TO_CONTROL則定義了您的程序所要載入用戶控件的虛擬路徑。