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 参数。

4

1 回答 1

4

这可能是也可能不是整个问题,但通常试图实例化UserControl你正在做的方式会导致问题。你应该使用类的LoadControl(path)方法来做到这一点Page

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

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

于 2013-02-20T21:41:55.647 回答