我目前正在使用 c# 和 asp.net 开发一个网站。为此,我需要创建动态控件,但我遇到了一些问题。我已经阅读了官方文档并搜索了很多教程,但不幸的是,没有人允许我解决这个问题。
这是我正在尝试做的一个非常简化的示例;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
CreateControls();
else
UpdatePage();
}
protected void CreateControls()
{
Button button1 = new Button();
button1.ID = "_Button1";
button1.Text = "Button1";
button1.Click += new System.EventHandler(_ClickEvent);
_Panel.Controls.Add(button1);
Button button2 = new Button();
button2.ID = "_Button2";
button2.Text = "Button2";
button2.Click += new System.EventHandler(_ClickEvent);
_Panel.Controls.Add(button2);
}
protected void UpdatePage()
{
Button button1 = ((Button)_Panel.FindControl("_Button1"));
button1.Text = "I went through UpdatePage and changed";
Button button2 = ((Button)_Panel.FindControl("_Button2"));
button1.Text = "I went through UpdatePage and changed";
}
protected void _ClickEvent(object sender, EventArgs e)
{
}
这里的目的只是在单击其中一个按钮时更改按钮的文本。“Page_Load”方法和“UpdatePage”方法一样被正确调用,但在后者中,Button1 和 Button2 控件已经消失(它们不再在面板控件中),并且显然引发了 NullPointer 异常。
有人能解释一下吗?我知道我可能错过了有关页面生命周期的一些内容,但在任何地方都找不到任何明确的解决方案。
非常感谢 !