2013-02-20 57 views
0

下面的代碼將不控制添加到一個aspx佔位符:無法呈現控制要佔位符

var control = new ASCXControl { ID="searchFilters", Filters = filters }; 

var placeholder = Utility.FindControlRecursive(Page, "rightColumnSearchFilters") as PlaceHolder; 
if(placeholder != null){ 
    placeholder.Controls.Add(control); 
    placeholder.Visible = true; 
} 

當調試,佔位符被發現,控制顯示爲添加到佔位符進入後控制集合塊,但我看不到頁面上的佔位符。

我目前需要將變量傳遞給控件才能找到我需要顯示的過濾器。雖然我不喜歡在控件之間傳遞變量,但我沒有看到任何其他方式。

我錯過了什麼會使控件不呈現?有一個更好的方法嗎?

編輯:

我試圖讓ASCX呈現內的HTML。我能夠在控件的Page_Load中獲取Filters參數。

+0

'ASCXControl'是一個普通的用戶控件,還是Sitecore獨有的? – 2013-02-20 21:29:03

+0

ASCXControl是繼承於'System.Web.UI.UserControl'的常規用戶控件。 – al3xnull 2013-02-20 21:32:52

+0

IsColumnSearchFilters是一個asp:佔位符還是sc:佔位符? – techphoria414 2013-02-20 21:45:55

回答

4

這可能是也可能不是全部問題,但通常試圖實例化一個UserControl你這樣做會導致問題。你應該做它用Page類的LoadControl(path)方法:

ASCXControl ctl = (ASCXControl) LoadControl("path"); 

我不是100%肯定,但我認爲,如果你只是初始化它像一個普通的類/控制,你風不運行所有事件處理程序(例如Load),你通常會。