0

是否可以有一个带有单个模板的自定义服务器控件(这意味着用户可以放置他们想要的任何文本)而不必像 FormView 控件中那样需要“ItemTemplate”?

我希望源视图中的控件看起来像这样

<foo:mycontrol runat="server" id="controlid">

用户在这里放置他们想要的任何 html 内容

</foo:mycontrol>

取而代之的是

<foo:mycontrol runat="server" id="controlid">

<ItemTemplate>

用户在这里放置他们想要的任何 html 内容

</ItemTemplate>

</foo:mycontrol>

我的自定义服务器控件需要添加 2 个 asp.net 面板控件和 ajax collapsiblepanel 控件。一个面板将是展开/折叠面板,另一个面板是我想要将用户文本放入其中然后让可折叠面板折叠并隐藏面板的面板。

我知道如何执行此操作(至少我认为我这样做)创建复合服务器控件并使用 ITemplate 但这需要<ItemTemplate源视图中的子 > 标记。

有任何想法吗?

4

3 回答 3

0

朱里,

我应该澄清一下,这个控件可能会被非开发人员或我们不希望需要太多设置属性知识的开发人员使用,所以我正在尝试开发一个控件,他们会像面板一样将其拖上并输入文本,并可能设置一个属性,即标题。我能够创建一个复合控件,我创建了一个标题面板、可折叠面板并使用了 asp.net ajax collapsiblepanel 控件。我不得不添加一个我不想这样做的模板。

达雷尔

于 2009-10-05T12:23:52.603 回答
0

我没有对此进行测试,但我认为您可以通过从文字或标签控件继承然后读取/写入 Text 属性来做到这一点。

ps 下次当您发布问题时,请检查预览以查看它是否可读并格式化代码,前面有 4 个空格,以便实际显示并突出显示语法。

于 2009-10-04T15:28:58.690 回答
0

嗯,为什么不使用只指定要折叠的控件的方法。例如,您的声明可能看起来像

<foo:mycontrol runat="server" id="controlid" TargetControlId="pnlToCollapse" />

在内部,您的 mycontrol 使用 FindControl 方法(这里是递归版本)获取指定 TargetControlId 的实例。您需要的第二个面板也可以这样做。

因此,您的服务器控件只获取配置信息并且不呈现任何内容,但在这种情况下控制其他面板的呈现。在我看来,这是一个更灵活的解决方案。

于 2009-10-04T15:40:46.830 回答