ASP.NET - 动态创建按钮

时间:2009-04-13 05:04:54

标签: asp.net

我在网络表单中添加了一个动态创建的按钮。但它的点击事件不起作用。有人可以解释一下原因吗?

这是我的代码:

    Button save = new Button();
    save.ID = "btnSave";
    save.Text = "Save";
    save.Click += new System.EventHandler(this.Save_Click);
    Webform.Controls.Add(save);

protected void Save_Click(object sender, EventArgs e)
{

    Response.Redirect("Default.aspx");
}

它回到了同一页面。它没有重定向到Default.aspx。

2 个答案:

答案 0 :(得分:4)

您的代码示例不够完整,无法进行诊断,但我会对其进行一次检查。

在页面生命周期的哪个阶段,您是否将按钮添加到页面?如果你在PreRender中这样做,那就是它无法正常工作的原因。你应该在Init期间这样做。

更新:

您无法在页面生命周期的Init阶段之后动态创建控件并使其正常工作,除非您每次都以相同的方式创建它。这是因为生命周期如下所示:

初始 - >加载ViewState - >页面加载 - >事件处理程序 - >的PreRender。

您正在创建一个按钮,并在第二个最后阶段为其提供事件处理程序。这意味着永远不会注册该按钮以将其与页面一起保存为ViewState,因此单击该按钮时,该按钮的所有状态都不会恢复 - 这意味着您指定的事件处理程序将消失,并且永远不会被调用。

我的建议是在页面上正常创建“保存”按钮(不是动态的),只需将其设置为Visible =“False”即可。然后,在第一个按钮的Click处理程序中,只需将Save按钮设置为Visible =“true”。

答案 1 :(得分:0)

您是否可以对此进行调试并确定代码是否会转到click事件,或者您的重定向是否存在问题? Womp是正确的,在Page_Init中绑定事件。