2010-06-28 154 views
2

我們有一些代碼用於構建ASP.NET webforms頁面上的控件的鍵/值對及其值。我們使用「Controls」集合和遞歸構建這個鍵/值對。訪問aspx頁面中的控件

唯一的問題是,ascx控件似乎沒有回到「控件」集合中。相反,我們獲得了ascx的控件。

的東西類似下面的代碼:

protected override void OnLoad(EventArgs e) 
{ 
    GetControls(this); 
} 
protected void GetControls(System.Web.UI.Control ctl) 
{ 
    foreach (Control subCtl in ctl.Controls) 
    { 
     GetControls(subCtl); 

     string value; 
     if (GetValueFromControl(subCtl, out value)) 
     { 
       _ControlValues.Add(subCtl.ClientID, value); 
     } 
    } 
} 

的subCtl絕不是ascx控件。有沒有辦法在頁面上獲得ascx控件的列表,或者更好地還是包含兩種類型的不同集合?

感謝

漢斯

回答

1

.ascx控件確實出現在控件集合中。

看着你的代碼,我不知道這是否可能是GetValueFromControl函數的問題 - 也許它不能正確運行.ascx控件,或者你正在尋找的任何值沒有設置?或者,也許真正的代碼中的等效遞歸函數僅將葉節點添加到_ControlValues,並跳過帶有子節點的節點?

+0

歡呼聲我認爲我現在擁有它 – user378199 2010-06-29 15:35:46

1

據我所知,ASCX控制都包含在Controls收藏。

我做了一個繼承System.Web.UI.WebPage的類,它將遍歷this.Controls中的所有控件,它包含了所有的ASCX類。

相關問題