【发布时间】:2011-05-14 16:14:03
【问题描述】:
我需要遍历我的 asp.net 网页中的所有控件并对控件执行一些操作。在一种情况下,我从页面中制作了一个巨大的字符串并将其通过电子邮件发送给自己,在另一种情况下,我将所有内容保存到 cookie 中。
问题在于母版页和项目中包含控件集合。我希望能够将 Page 传递给该方法,然后让该方法足够通用,以循环遍历最内层内容页面中的所有控件并使用它们。我试过用递归来做这件事,但我的递归是不完整的。
我想将一个 Page 对象传递给一个方法,并让该方法循环遍历最内层内容页面中的所有控件。我怎样才能做到这一点?
private static String controlToString(Control control)
{
StringBuilder result = new StringBuilder();
String controlID = String.Empty;
Type type = null;
foreach (Control c in control.Controls)
{
try
{
controlID = c.ID.ToString();
if (c is IEditableTextControl)
{
result.Append(controlID + ": " + ((IEditableTextControl)c).Text);
result.Append("<br />");
}
else if (c is ICheckBoxControl)
{
result.Append(controlID + ": " + ((ICheckBoxControl)c).Checked);
result.Append("<br />");
}
else if (c is ListControl)
{
result.Append(controlID + ": " + ((ListControl)c).SelectedValue);
result.Append("<br />");
}
else if (c.HasControls())
{
result.Append(controlToString(c));
}
//result.Append("<br />");
}
catch (Exception e)
{
}
}
return result.ToString();
}
没有尝试/捕获
对象引用未设置为对象的实例。
在线 controlID = .....
【问题讨论】:
-
您遇到的错误是什么?
-
没有错误,我的字符串根本没有代表每个控件的条目。
-
你没有收到错误的原因是因为你有一个 try/catch 块隐藏它。删除它,看看会发生什么。
标签: c# asp.net webforms master-pages