使用内部 html C# 创建自定义控件
我如何创建一个接受内部 html 的自定义控件,就像通常的 .net datagrid 或 ajax 选项卡式控件...类似这样:
<KITT:tabs id="s" runat="server" >
<w:tab sectionid="benefits">
here goes my html or any content, i want to render as is
</w:tab>
</KITT:tabs>
我知道如何创建没有内部 html、选项卡对象、选项卡列表的控件, 使用
[ParseChildren(true,"MyTabs")]
然后在控件中 ... 但我不知道从那里去哪里,有什么提示吗?
how can i create a custom control that accepts a inner html, like the usual .net datagrid or ajax tabbed control... something like this:
<KITT:tabs id="s" runat="server" >
<w:tab sectionid="benefits">
here goes my html or any content, i want to render as is
</w:tab>
</KITT:tabs>
I know how to create that with no inner html, a Tab object, a list of Tabs, then using
[ParseChildren(true,"MyTabs")]
in the control...
but i dont know where to go from there, any hints?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我使用的策略,我认为是最简单的。这是一个面板(呈现为 div),并且是一个服务器控件(无 ascx):
无需使用模板,并且只需很少的特殊属性即可使其工作。我只是使用字符串作为属性,然后使用 Literal 控件呈现它。
This is the strategy I use, which I think is the easiest. This one is a Panel (which is rendered as a div), and is a server control (no ascx):
No messing around with templates, and very few special attributes needed in order to make it work. I'm just using a string as the property and then rendering it using a Literal control.
结合一般有关自定义控件的答案:
自定义子控件< /a>
和 MSDN 模板控件
是解决此问题的正确方法非常简单,一旦在命名空间中创建和定义子元素(因为您需要交叉引用它),它应该添加一个属性:Tab 类如下所示
这将允许 tabcontent 子元素成为
控件中的 主标记ascx 创建必要的 [ParseChildren(true, "MyTabs")] 并将您的 MyTabs 列表或集合绑定到转发器,这将输出所有包含的选项卡,您的 ascx 看起来像这样
后面的代码
最终看起来像这样,注册您的控件(Tab 和 ascx)
并使用它......
combining the answer about custom controls in general:
custome child controls
and MSDN Templated Conrols
the right way to go about this is very simple, once creating and defining the child element in a namespace (because you need to cross reference it), it should have one added property: the Tab class looks like this
This will allow the tabcontent child to your main tag
in your control ascx create the necessary [ParseChildren(true, "MyTabs")] and bind your MyTabs list or collection to a repeater, this will output all contained tabs, your ascx looks like this
the code behind looks like this
finally, register your controls (both Tab and ascx)
and use it...
您正在寻找的称为“模板化控件”。您可以有关 MSDN 的更多信息。
What you're looking for is called a "templated control." You can find more information on MSDN.