我有一个 div 是 runat="server"。div 包含在面板中,并且 div 中包含一些控件。当我运行“ClearControlsInPanel()”方法时,div 之外(但在面板内)的所有控件都被清除,如下所示:
public static void ClearControlsInPanel(Panel paneltoclear, string[] ignorelist)
{
foreach (Control c1 in paneltoclear.Controls)
{
if (c1 is TextBox)
{
if (!ignorelist.Contains(c1.ID.ToString()))
{
((TextBox)c1).Text = "";
}
}
if (c1 is DropDownList)
{
if (!ignorelist.Contains(c1.ID.ToString()))
{
((DropDownList)c1).SelectedIndex = 0;
}
}
//etc.
}
}
到达 div 后,我看不到其中的控件,因此这些控件都不会被清除。具有讽刺意味的是,我发现一个人发表了关于完全相同的事情的帖子,为什么将 runat=server 添加到 div 标记会在控件集合中引发类型为 'System.Web.HttpException 的异常? 但是线程结束了,没有真正的解决方案或解释。
完整的例外是:
base {System.Web.UI.HtmlControls.HtmlContainerControl} = {InnerText =
'((System.Web.UI.HtmlControls.HtmlContainerControl)
(((System.Web.UI.HtmlControls.HtmlGenericControl)(paneltoclear.Controls._controls
[165])))).InnerText' threw an exception of type 'System.Web.HttpException'}
请假设这必须保留为 runat 服务器 div,并且不能更改为面板。(我几乎可以肯定将其更改为面板会解决它,但我们还有其他要求需要将其作为 runat 服务器 div(长话短说))。