具有多个控件集合的ASP.Net容器控件

时间:2010-06-02 12:46:23

标签: asp.net containers custom-controls

我一直在尝试创建一种特殊的字段集。哪种奇妙的东西,但主要是崩溃和维持状态。此外,fieldset的两个部分(在图例中,在其余部分中)必须可用于后面的代码(声明性地)。

使用页面或控件中的代码应如下所示:

<myTagPrefix:Fieldset>
 <myTagPrefix:Legend>[controls here should be available in codebehind]</myTagPrefix:Legend>
 <myTagPrefix:Content>[controls here should be available in codebehind]</myTagPrefix:Content>
</myTagPrefix:Fieldset>

或者

<myTagPrefix:Fieldset>
 <Legend>[controls here should be available in codebehind]</Legend>
 <Content>[controls here should be available in codebehind]</Content>
</myTagPrefix:Fieldset>

哪个会产生或多或少的以下HTML(不包括魔法折叠和状态维护代码):

<fieldset>
 <legend>[result of rendered legend controls]</legend>
 [result of rendered legend controls]
</fieldset>

我查看了一个模板化控件,通过标记为“TemplateContainer”的属性公开模板容器,这很好用,除了后面的代码不能再访问模板中的控件这一事实。

我也调查了inheriting a container control面板,并覆盖了开始和结束标记的渲染方法,这也很好,除了它只能包含一个控件集合,而这个字段集控件应该有两个(图例中的控件和其余字段集中的控件)。这可以通过将图例文本作为字段集的属性公开来克服,但为了使事情变得复杂,文本不是唯一要在图例中显示的内容。 (例如:图像和按钮也可以显示)。

当然,我可以更抽象地看到这个问题,我基本上要求一个带有多个子控件集合的容器控件。

当我试图找出与之比较的内容时,功能接近于MultiView; MultiView只能包含“View”类型的控件,并且代码控制可以在代码隐藏中使用。 MultiView不限制其子控件的数量和唯一性这一事实,我的控制应该是(我最多可以使用一个图例和一个内容元素)...现在;)

有没有人知道如何构建MultiView?有一个我忽略的技巧吗?任何帮助或建议将不胜感激。

0 个答案:

没有答案