【问题标题】:Disable postback of a dynamically created button asp.net禁用动态创建的按钮 asp.net 的回发
【发布时间】: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 设置为truefalse 会不会更容易?
  • @katz 是否可以在不更改 aspx 代码的情况下实现这一目标?我真的希望仅在单击“Button1”时创建该按钮。我正在开发一个网站,并且已经做了很多编码。如果我要更改 aspx 代码,我将不得不对 .aspx.cs 代码进行大量更改。

标签: asp.net button dynamic postback


【解决方案1】:
if (IsPostBack == true)

可以变成

if (IsPostBack)

然后

Response.Redirect("../Page2");

可以变成

Response.Redirect("~/Page2");

在 aspx 检查你有:

<asp:Button runat="server" ID="Button1" OnClick="Button1_Click"></asp:Button>

此外,您可以在后面的代码中绑定点击(例如 OnLoad):

Button1.Click += Button1_Click;

也解除绑定:

Button1.Click -= Button1_Click;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多