押されたボタンに応じて、別のコントロールがページに追加されます (ボタン 1 が TextBox を追加し、button2 がラベルを追加するとします)。
次のようなコードがあります。
protected void but1_click(object sender, EventArgs e)
{
TextBox tb = new TextBox();
tb.ID = "tb1";
paramsCtrlDiv.Controls.Add(tb);
}
protected void but2_click(object sender, EventArgs e)
{
Label lb = new Label();
lb.ID = "lb1";
paramsCtrlDiv.Controls.Add(lb);
}
次に、ページ上のすべてのコントロールとその値を取得するための 3 番目のボタン (button3) があります。(この例では、各ボタンが 1 回だけクリックされると仮定します)。
私の問題は、button3 が押されたときに paramsCtrlDiv.controls 配列に追加されたコントロールが含まれていないことです。各ポストバックの Page_Load 時にこれらのコントロールを追加する必要があることはわかっています。私の問題は、ユーザーが追加したコントロールが正確にわからないためです。何を追加したいのかわからないため、Page_Load (テキスト ボックス、ラベル、ラベルのみ、または tb のみ) を追加できます。ユーザーが押すものを制御しません。
セッションにすべてを保存できることはわかっていますが、これがエレガントなソリューションかどうかはわかりません。このコントロールの複数のインスタンスが異なるタブにある場合もあるため、それぞれが独自のコントロール コレクションを正しく維持する必要があります。