asp.netのWebページのすべてのコントロールをループして、コントロールする必要があります。 1つの例では、私はページから巨大な文字列を作り、それを自分宛てにメールしています。別のケースでは、すべてをクッキーに保存しています。asp.net Webページのすべてのコントロールをループする
問題は、マスターページとその中のコントロールのコレクションを持つアイテムです。ページをメソッドに渡し、そのメソッドを最も内側のコンテンツページのすべてのコントロールをループして処理するのに十分な汎用性を持たせたいと考えています。私は再帰でこれをやろうとしましたが、再帰は不完全です。
Pageオブジェクトをメソッドに渡し、そのメソッドが最も内側のコンテンツページのすべてのコントロールをループするようにしたいとします。どうすればこれを達成できますか? try/catchなし
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で
あなたの文書のルート要素から開始した場合= .....
エラーは何ですか。 –
エラーはありません。文字列にはすべてのコントロールを表すエントリがありません。 – MAW74656
エラーが表示されないのは、try/catchブロックを隠しているためです。それを取り除き、何が起こるかを見てください。 –