2011-08-15 31 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";