在 foreach 中看不到我的用户控件
Can't see my user controls in a foreach
我似乎无法在 for-each 期间找到我的自定义用户控件。
这是一个自定义用户控件,这是我的代码:
<uc2:MetaTag runat="server" id="MetaTag" SystemCode="TEXT" Text="test" />
但它确实找到了我所拥有的文字控件。
foreach (Control controlItemFound in Page.Controls)
{
Response.Write("Control Found: " + controlItemFound.GetType() + "<br );
if(controlItemFound is MetaTag)
{
MetaTag ctrl = (MetaTag)controlItemFound;
ctrl.Text = Server.HtmlDecode("MetaTag FOUND!!!");
}
if (controlItemFound is LiteralControl)
{
LiteralControl ctrl = (LiteralControl)controlItemFound;
ctrl.Text = Server.HtmlDecode("Server Text!");
}
}
Page.Controls 只会让您直接访问页面 Class 中的控件。它不包括嵌套在其他控件中的控件。
例如,您可能已添加到页面(嵌套在 Form 标记中)的 Literal 和 Meta 控件不会包含在 Page.Controls 集合中。
至于您在 Page.Controls 集合中识别的 LiteralControl,这将是 ASP.NET 框架添加的 LiteralControl 之一。
尝试遍历 Meta 控件容器的控件 属性。
如果 Meta 控件是 Form 的直接子控件(Form 标记),
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc2:metatag runat="server" id="MetaTag" systemcode="TEXT" text="test" />
</form>
</body>
</html>
然后使用下面的代码,其中form1是Form的名字
foreach (Control controlItemFound in this.form1.Controls)
{
}
我似乎无法在 for-each 期间找到我的自定义用户控件。
这是一个自定义用户控件,这是我的代码:
<uc2:MetaTag runat="server" id="MetaTag" SystemCode="TEXT" Text="test" />
但它确实找到了我所拥有的文字控件。
foreach (Control controlItemFound in Page.Controls)
{
Response.Write("Control Found: " + controlItemFound.GetType() + "<br );
if(controlItemFound is MetaTag)
{
MetaTag ctrl = (MetaTag)controlItemFound;
ctrl.Text = Server.HtmlDecode("MetaTag FOUND!!!");
}
if (controlItemFound is LiteralControl)
{
LiteralControl ctrl = (LiteralControl)controlItemFound;
ctrl.Text = Server.HtmlDecode("Server Text!");
}
}
Page.Controls 只会让您直接访问页面 Class 中的控件。它不包括嵌套在其他控件中的控件。 例如,您可能已添加到页面(嵌套在 Form 标记中)的 Literal 和 Meta 控件不会包含在 Page.Controls 集合中。
至于您在 Page.Controls 集合中识别的 LiteralControl,这将是 ASP.NET 框架添加的 LiteralControl 之一。
尝试遍历 Meta 控件容器的控件 属性。 如果 Meta 控件是 Form 的直接子控件(Form 标记),
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc2:metatag runat="server" id="MetaTag" systemcode="TEXT" text="test" />
</form>
</body>
</html>
然后使用下面的代码,其中form1是Form的名字
foreach (Control controlItemFound in this.form1.Controls)
{
}