2013-02-20 52 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),你通常会。