用户控件在回发中需要ID吗?

时间:2012-07-10 13:20:44

标签: c# .net user-controls

我在生成页面时在服务器端的面板中添加了一些div,并为每个添加了一个ID:

HtmlGenericControl divContainerInside = new HtmlGenericControl("div");
divContainerInside.ID = "inside_" + m_oIDCategoria + "_" + numero;

比回发(重新创建它们之后),我循环它们:

foreach (HtmlGenericControl divInside in myPanel.Controls.OfType<HtmlGenericControl>())
{
    Response.Write(divInside.ID);
}

一切都好!但是,如果我在生成它时删除divContainerInside.ID,我会得到一个NullException来循环它们。为什么呢?

2 个答案:

答案 0 :(得分:2)

当您尝试读取尚未设置的ID时,我猜您会收到NullException。

如果您更改此代码,您将获得以下值:

foreach (HtmlGenericControl divInside in myPanel.Controls.OfType<HtmlGenericControl>())
{
    Response.Write(divInside.ClientID);
}

PS:我不知道你是否有这行代码:

myPanel.Controls.Add(divContainerInside);

如果您想了解有关网络控件的更多信息,可以阅读articlethis

答案 1 :(得分:-1)

您无法使用response.Write向页面添加控件,您需要将其添加到Pages或其他控件集合中,如下所示:

Page.Controls.Add(divInside);