gpt4 book ai didi

c# - 自定义控件的 Controls.Count 零

转载 作者:太空狗 更新时间:2023-10-30 01:11:39 25 4
gpt4 key购买 nike

在自定义服务器控件中,我只是写出子控件的数量。

如果在控制标签的正文中使用 <% %> 标签,计数会变为零吗?

这是我极其简化的控件:

public class Script : Control
{
public override void RenderControl(HtmlTextWriter writer)
{
writer.Write(this.Controls.Count.ToString());
}

}

当仅传递文字数据时,写入的计数如预期的那样为 1:

<my:Script runat="server" ID="script3" >
function foo(){}
</my:Script>

当传递文字数据和一些计算数据时,计数变为零:

<my:Script ID="Script1" runat="server" >
function foot(){}
<%=String.Empty %>
</my:Script>

String.Empty 也没有什么特别之处。我放在这里的任何内容都会导致计数为零。

有趣的是,其他控制标签工作正常。以下数为 3:

<my:Script runat="server" ID="Script2">
hi
<asp:HyperLink runat="server" NavigateUrl="/" Text="hi" />
</my:Script>

还有其他方法可以获取自定义控件的子“内容”吗?我认为有一些方法,确实如此,但我只能检查 System.Web.UI.WebControls.Content 的元数据 - 而不是实现。

最佳答案

无法修改 Controls如果您的控件具有 <%%>,请收藏正文中的标签(如果您尝试 Add 某些东西,那么您会得到一个异常(exception)解释)。出于同样的原因,Controls集合实际上是空的。您可以检查集合是否因 <%%> 而为空使用 Controls.IsReadOnly 的标签属性(property)。

关于c# - 自定义控件的 Controls.Count 零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2016992/

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