我在我的search.aspx页面中有一个.ascx用户控件。如何从后面的search.aspx.cs代码中的.ascx用户控件中获取控件?从ASP.Net中的ascx页抓取控件
keywordSearch.Value = "value";
// the code behind can't see the keywordSearch control
我在我的search.aspx页面中有一个.ascx用户控件。如何从后面的search.aspx.cs代码中的.ascx用户控件中获取控件?从ASP.Net中的ascx页抓取控件
keywordSearch.Value = "value";
// the code behind can't see the keywordSearch control
通常内部控制不从模板用户控件显示,因为他们声明为protected
。但是,您可以暴露控制在一个公共属性,像这样:
public TextBox CustomerName {
get { return txt_CustomerName; }
}
编辑:如果您需要设置控件的值,那么你有一个公开值的属性更好,不控制:
public string CustomerName {
get { return txt_CustomerName.Text; }
set { txt_CustomerName.Text = value; }
}
您可能能够在后面,你的用户控件的代码提供一个公共(或内部)属性允许“让”在用户控制的控制。然后,您可以从页面的代码中访问该属性。
尝试FindControl方法来访问在容器页面控制:
((TextBox)Page.FindControl("keywordSearch")).Value = "value";
你怎么会写一个setter吗? – cdub
如果您需要设置值,那么您应该根据此处讨论的控件将属性暴露为字符串或其他类型,然后在访问器中获取/设置值。你想暴露一个控制器的值而不是控制器本身的setter。 – kprobst
谢谢我现在终于开始工作了 – cdub