gpt4 book ai didi

c# - 如何将子节点添加到派生自 System.Web.UI.Control 的自定义 asp.net 用户控件

转载 作者:太空狗 更新时间:2023-10-29 21:15:10 24 4
gpt4 key购买 nike

我想知道如何将一些额外的子节点添加到派生自 System.Web.UI.Control 的自定义用户控件类。

例如,目前我有一个不包含子节点的控件,并且在设计图面上看起来如下所示。

<cust:MyCustomControl id="ctlMyCustomControl" runat="server" attribute1="somevalue" attribute2="somevalue" ></MyCustomControl>

我正在寻找的是能够从设计界面向该控件添加 n 个子节点,然后从代码访问它们的值。所以添加到上述控件中。

<cust:MyCustomControl id="ctlMyCustomControl" runat="server" attribute1="somevalue" attribute2="somevalue" >
<childnode1>value1</childnode1>
<childnode2>value2</childnode2>
</MyCustomControl>

我不清楚如何访问子节点。

欢迎任何有关如何执行此操作的见解。

最佳答案

您希望能够 describe asp.net control properties declaratively .

为了能够拥有以下标记:

<Abc:CustomControlUno runat="server" ID="Control1">
<Children>
<Abc:Control1Child IntegerProperty="1" StringProperty="Item1" />
<Abc:Control1Child IntegerProperty="2" StringProperty="Item2" />
</Children>
</Abc:CustomControlUno>

您需要以下代码:

[ParseChildren(true)]
[PersistChildren(true)]
[ToolboxData("<{0}:CustomControlUno runat=server></{0}:CustomControlUno>")]
public class CustomControlUno : WebControl, INamingContainer
{
private Control1ChildrenCollection _children;

[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public Control1ChildrenCollection Children
{
get
{
if (_children == null)
_children = new Control1ChildrenCollection();
return _children;
}
}
}

public class Control1ChildrenCollection : List<Control1Child>
{
}

public class Control1Child
{

public int IntegerProperty { get; set; }
private string StringProperty { get; set; }
}

关于c# - 如何将子节点添加到派生自 System.Web.UI.Control 的自定义 asp.net 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com