无法将控件呈现到占位符

本文关键字:占位符 控件 | 更新日期: 2023-09-27 18:00:23

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

无法将控件呈现到占位符

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

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

我不能100%确定,但我认为,如果你像普通的类/控件一样实例化它,你最终不会像通常那样运行所有的事件处理程序(如Load)。