2009-11-25 25 views
3

我在運行時將控件添加到Page Form對象。如何從動態構建的表單訪問回發上的表單控件

每個控件都有一個Id。

在回發上,我希望能夠訪問這些控件及其值。

當前,當我做回發時,表單在Form.Controls集合中沒有控件。

我該如何解決這個問題?

只有當您每次頁面加載時將控件添加到頁面時,這是唯一可能的嗎?

回答

2

動態添加的控件需要在每次頁面加載時添加,否則它們將丟失。

但是,只要這些控件的視圖狀態始終以相同的ID添加,就可以保持它們的狀態。

+0

我對此不高興,但我不情願接受。 – Dave 2009-11-25 15:22:00

1

我相信你必須動態添加控件才能在回發中訪問它們。所以如果你動態添加一個文本框,你的事件處理程序不能檢索它的值,除非你再次添加它。

編輯:我使用的一種解決方法是添加一組預定義的服務器控件到頁面,然後使用JavaScript來隱藏/顯示這些元素。您可以避免回發,並避免與從動態添加的服務器控件檢索值相關的不必要的湯姆 - foolery。當然,這會將您限制爲預定義數量的控件。

這是我的ASP.NET Web窗體的一大寵物,也是我決定探索ASP.NET MVC的一個因素 - 沒有更多的視圖狀態/回發混亂。

相關問題