【发布时间】:2016-07-03 08:59:36
【问题描述】:
这是我的 Page1.aspx 代码:
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:Panel ID="Panel1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</asp:Panel>
</asp:Content>
这是我的 Page1.aspx.cs 代码
public partial class Page1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == true)
{
btn_Click(sender, e);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = new Button();
btn.Text = "Dynamic button";
btn.Click += btn_Click;
Panel1.Controls.Add(btn);
}
void btn_Click(object sender, EventArgs e)
{
Response.Redirect("../Page2");
}
}
从这段代码中,当单击“Button1”时,它应该创建一个新按钮“btn”,当单击“btn”时,它应该转到其单击函数中的 url(即 btn_Click())。但是当我单击“Button1”时,它不会执行“Button1_Click()”而是“btn_Click()”。我该怎么办??
【问题讨论】:
-
删除此代码
if (IsPostBack == true) { btn_Click(sender, e); } -
如果我删除它,那么按钮“btn”的事件处理程序将不起作用。
-
它会在你进入
Page_Load时工作,设置一个断点并检查。 -
如果您添加一个新按钮并将
visible设置为true或false会不会更容易? -
@katz 是否可以在不更改 aspx 代码的情况下实现这一目标?我真的希望仅在单击“Button1”时创建该按钮。我正在开发一个网站,并且已经做了很多编码。如果我要更改 aspx 代码,我将不得不对 .aspx.cs 代码进行大量更改。
标签: asp.net button dynamic postback