无法将控件渲染到占位符

时间:2013-02-20 21:02:32

标签: c# .net sitecore sitecore6

以下代码不会向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参数。

1 个答案:

答案 0 :(得分:4)

这可能是也可能不是整个问题,但通常试图以UserControl方式实例化它会导致问题。您应该使用LoadControl(path)类的Page方法:

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

我不是百分百肯定,但我认为如果你只是像普通的类/控件一样实例化它,你最终不会运行你通常会遇到的所有事件处理程序(例如Load)。