我正在创建的用户控件由 3 个文件组成(ascx、ascx.cs 和 ascx.designer.cs)
我的问题 :
在 aspx 页面 (asp:Button runat="server" id="mybutton" />) 中创建的控件未正确初始化,因此附加到“加载”事件并尝试使用按钮会导致空对象例外
我怀疑这是一个 Visual Studio 问题,可能是奇怪的错误或不寻常的设置,但如果我在做一些愚蠢的事情,我不会感到惊讶。
我尝试的解决方法
我已将另一个工作用户控件从另一个项目复制到 Visual Studio 中的该项目中,但它也不起作用(在 ascx 页面中定义的控件在页面后面代码的加载事件中为空,尽管它们在我复制它们的地方工作正常)
我正在使用“CreateChildControls()”方法,就像我在其他一些复合控件中所做的那样,但是在加载和初始化事件中一切仍然为空
我创建了一个单独的解决方案和项目文件,并添加了所有文件和引用,但这仍然无济于事。
在我看来,“页面生命周期”(控件生命周期?)由于某种原因没有正确初始化控件,但不明白为什么,请有人帮忙。
将我的代码作为请求发布:
PersonalDetails.aspx
<cwpEditControl:PersonalDetails runat="server" id="edtPersonalDetails" />
PersonalDetails.ascx
<%@ Control Language="C#" CodeBehind="PersonalDetails.ascx.cs" Inherits="company.web.CustomerWebPortal.controls.edit.PersonalDetails" %>
<asp:Button runat="server" ID="myTestButton" />
PersonalDetails.ascx.cs
public PersonalDetails()
{
this.Load += new EventHandler(PersonalDetails_Load);
}
void PersonalDetails_Load(object sender, EventArgs e)
{
this.myTestButton.Text = "Submit"; //this line creates an exception!
}
PersonalDetails.ascx.designer.cs
protected global::System.Web.UI.WebControls.Button myTestButton;