Это сработало для меня ..
Просто убедитесь, что вы идентифицируете все свои элементы управления, начиная с префиксов, показанных ниже. например: <asp:TextBox ID="TextBoxEmail"...>
например. В противном случае парсер не обнаружит ваш контроль. Если у кого-то есть лучший способ синтаксического анализа без знания / жесткого кодирования идентификатора элементов управления, это будет еще слаще.
protected String GetControls(Control control)
{
//Get text from form elements
String text = "";
foreach (Control ctrl in control.Controls)
{
if (ctrl.ClientID.Contains("TextBox"))
{
TextBox tb = (TextBox)ctrl;
text += tb.ID.Replace("TextBox", "") + ": " + tb.Text + "<br />";
}
if (ctrl.ClientID.Contains("RadioButtonList"))
{
RadioButtonList rbl = (RadioButtonList)ctrl;
text += rbl.ID.Replace("RadioButtonList", "") + ": " + rbl.SelectedItem.Text + "<br />";
}
if (ctrl.ClientID.Contains("DropDownList"))
{
DropDownList ddl = (DropDownList)ctrl;
text += ddl.ID.Replace("DropDownList", "") + ": " + ddl.SelectedItem.Text + "<br />";
}
if (ctrl.ClientID.Contains("CheckBox"))
{
CheckBox cb1 = (CheckBox)ctrl;
text += cb1.ID.Replace("CheckBox", "") + ": " + cb1.Text + "<br />";
}
if (ctrl.HasControls())
text += GetControls(ctrl);
}
return text;
}
И чтобы вызвать его, передав объект Page ...
String log;
foreach (Control ctrl in Page.Controls)
log += GetControls(ctrl);