2011-08-15 71 views
4

我在我的search.aspx頁面中有一個.ascx用戶控件。如何從後面的search.aspx.cs代碼中的.ascx用戶控件中獲取控件?從ASP.Net中的ascx頁抓取控件

keywordSearch.Value = "value"; 
// the code behind can't see the keywordSearch control 

回答

3

通常內部控制不從模板用戶控件顯示,因爲他們聲明爲protected。但是,您可以暴露控制在一個公共屬性,像這樣:

public TextBox CustomerName { 
    get { return txt_CustomerName; } 
} 

編輯:如果您需要設置控件的值,那麼你有一個公開值的屬性更好,不控制:

public string CustomerName { 
    get { return txt_CustomerName.Text; } 
    set { txt_CustomerName.Text = value; } 
} 
+0

你怎麼會寫一個setter嗎? – cdub

+0

如果您需要設置值,那麼您應該根據此處討論的控件將屬性暴露爲字符串或其他類型,然後在訪問器中獲取/設置值。你想暴露一個控制器的值而不是控制器本身的setter。 – kprobst

+0

謝謝我現在終於開始工作了 – cdub

3

您可能能夠在後面,你的用戶控件的代碼提供一個公共(或內部)屬性允許「讓」在用戶控制的控制。然後,您可以從頁面的代碼中訪問該屬性。

1

嘗試FindControl方法來訪問在容器頁面控制:

((TextBox)Page.FindControl("keywordSearch")).Value = "value";