我正在尝试将自定义用户Web控件的标签文本设置为
Email em = new Email(); //Email is the class of the custom user web control
em.setEmail(email);
Panel2.Controls.Add(em);
控件中的setEmail()
函数将标签lblEmail
的值设置为
public void setEmail(string recEmail)
{
lblEmail.Text = recEmail;
}
但我收到以下错误:
调试时,我看到recEmail
正在获取所提供的值。但不将其分配给lblEmail.Text
。
我认为这可能是由于控制注册问题,所以我将其注册为
<%@ Register Src="~/Email.ascx" tagname="Email" TagPrefix="uc1" %>
我也尝试在setEmail()函数中设置值,如下所示:
public void setEmail(string recEmail)
{
string a=recEmail;
lblEmail.Text = a;
}
调试时显示a
的值为recEmail
,但未分配给lblEmail.Text
由于我无法上传整个代码,因此请注意以下几点:
请告诉我该怎么做才能解决这个问题?
答案 0 :(得分:3)
默认情况下,用户控件的成员在初始化之前为null。并且在用户控件(和页面,可能还有一些其他类似类型)的构造函数中不会发生初始化。当控件被“加载”到某种上下文中时,就会发生这种情况。
而不是像这样初始化:
Email em = new Email();
看看the LoadControl()
method。你应该像这样初始化它:
Email em = (Email)LoadControl("Email.ascx");
这将通过触发其内置页面生命周期事件来初始化用户控件,其中UI控件已初始化。