我正在嘗試編寫一個方法,該方法將動態加載給定頁面的控件集合,以便可以遍歷它並創建駐留在頁面上的某些類型的控件的列表。這個想法是,對於從特定頁面類繼承的任何頁面,我想編譯一個包含特定屬性的可編輯字段列表。這一切都發生在這些頁面之外(在允許用戶管理這些其他頁面的不同頁面上)。通過代碼加載頁面控件集合
我都試過以下情形:
BasePage page = (BasePage)System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(string.Format("~/Pages/{0}/Manage.aspx", type.ToString()), typeof(BasePage));
IHttpHandler handler = PageParser.GetCompiledPageInstance(string.Format("~/Pages/{0}/Manage.aspx", type.ToString()), Context.Server.MapPath(string.Format("~/Pages/{0}/Manage.aspx", type.ToString())), HttpContext.Current);
BasePage page = handler as BasePage;
在這兩種情況下,頁面變量被啓動,但控件集合是空的,大概是因爲這兩種方法都只能裝載代碼隱藏和不標記。我如何動態加載頁面的控件集合?
爲什麼你不能把你的字段放在用戶控件中並從頁面A和頁面B訪問?在完成請求生命週期之前,您應該無法實例化頁面的控件集合,這與實例化該頁面的實例並不相同 - 您可能會發現通過UserControls可以更輕鬆地對字段進行子類化(您可以使用Page.LoadControl在飛行中加載) – dash 2012-04-04 22:11:30