2016-01-25 46 views
0

我對asp.net比較陌生。如何在父控件的Page_Load方法中的DropDownList控件中獲取選擇?

我有父母自定義用戶控件和子自定義用戶控件。 enter image description here

正如你可以看到上面的子控件有DropDownList控件。

當選擇在DropDownList控件回發改變累積和父控制的Page_Load(object sender, EventArgs e)方法進行燒製,

在這個階段(在父控制的Page_Load方法)我需要得到在DropDownList中選擇的值。

任何想法如何獲得父控件的Page_Load方法DropDownList中選定的值?

+0

更好的方法是使用事件。如果您的頁面需要處理用戶選擇DropDownList中的項目的事件,則UserControl應引發頁面可以處理的自定義事件。這樣你的UserControl就可以重用,並且不會與你的頁面硬連線。該代碼也更具可讀性並且不易出錯。 [這裏](http://www.codeproject.com/Articles/8797/Mastering-Page-UserControl-Communication#4.3)是一個很好的教程。 –

回答

1

一種選擇是將您的子控件的控件或訪問者公開給同一控件的值。例如,在後面的代碼對孩子的控制,你可以像

public TextBox MyTextBoxControl 
{ 
    get { return MyLocalTextBoxControl; } 
} 

屬性,然後訪問它的主控制的,像這樣的Page_Load:

protected void Page_Load(object sender, EventArgs e) 
{ 
    ... 
    var textValue = MyChildControl.MyTextBoxControl.Text; 
    ... 
} 

當然,你會需要決定從可重用性的角度來看,是否只公開控件的文本部分(或者父級需要的任何屬性)或訪問整個控件是否更好。

僅供參考,您只能按以下方式將訪問權限僅公開給子子控件的文本部分。

public string MyTextBoxControlText 
{ 
    get { return MyLocalTextBoxControl.Text; } 
    set { MyLocalTextBoxControl.Text = value; } 
} 
+0

相反,UserControl想要與頁面進行通信。最好的方式叫做[事件驅動溝通](http://www.codeproject.com/Articles/8797/Mastering-Page-UserControl-Communication#4.3) –

相關問題