我正在写什么,我将调用一个调查系统。这些调查将由一系列问题组成,分成若干部分。调查定义将存储在数据库中。问题可以是各种类型,具有不同的输入方法和验证(例如,文本框,数字文本框,选择列表等)。我创建了一组映射到不同问题类型的用户控件。我想从调查定义逻辑中完全抽象出调查呈现逻辑。我认为我会这样做的方式是使用一个哑呈现控件,它只需要一个控件集合并在每个循环中呈现它们就是我正在做的超级简化版本。将用户控件作为变量传递
private void RenderControls()
{
foreach (UserControl CurrentControl in this.ControlsToRender)
{
MyPlaceholder.Controls.Add(CurrentControl)
}
}
这种方式的作用是将正确的控件添加到占位符中,但没有任何呈现。大概这是因为它没有在asxc文件中的标记。
如果我做这样的事情
private void RenderControls()
{
foreach (UserControl CurrentControl in this.ControlsToRender)
{
MyPlaceholder.Controls.Add(this.LoadControl("path to ascx file")
}
}
它将创建控件的正确的号码,但我不希望在这里实例化控件,因为我需要根据cconditional逻辑来设置不同的属性我想从这个纯粹的渲染层抽象出来。
我想要做的是实例化其他控件,其中,设置相关的属性,然后只是将这些集合传递到呈现控件渲染出来。
有没有办法用用户控件做到这一点?我需要创建自定义控件吗?
之前,这就是我算了一下,我希望有办法做到这一点,而不必写我自己的渲染方法。 – 2010-01-25 19:57:05
最简单的事情就是让自定义控件扩展Panel,然后在其构造函数中,将所有布局和子控件添加到自己的Controls集合中。您不必以这种方式编写任何渲染逻辑 - 您可以将所有内容都安排在Controls集合中。 – womp 2010-01-25 20:00:54
啊当然,我认为这是去这里的路。 – 2010-01-25 20:05:00