C# 单击动态生成的锚不触发事件

C# 单击动态生成的锚不触发事件,c#,asp.net,C#,Asp.net,我在标签文本上有一个锚。我正在使用runat=“server”动态创建锚,单击按钮,它会按预期创建。我想使用它的click事件,但它不会启动 我的代码: lblEmail.Text = email + " <a href='#' runat='server' class='crossicon' onclick='removebtn_Click'></a> "; protected void removebtn_Click(object sender, EventArgs

我在标签文本上有一个锚。我正在使用runat=“server”动态创建锚,单击按钮,它会按预期创建。我想使用它的click事件,但它不会启动

我的代码:

lblEmail.Text = email + " <a href='#' runat='server' class='crossicon' onclick='removebtn_Click'></a> ";

protected void removebtn_Click(object sender, EventArgs e)
{
}
<asp:Panel runat="server" id="pnlEmail">
     <asp:Label runat="server" id="lblEmail"/>
</asp:Panel>
lblEmail.Text=email+”;
受保护的void removebtn_单击(对象发送方,事件参数e)
{
}

如何为该按钮创建事件?我不想使用JS,因为在这种情况下,我必须为新值使用隐藏字段

以这种方式向标签添加标记/文本不会添加链接按钮或将事件注册到服务器上的控件树。要实现动态添加控件和服务器事件的行为,需要注册控件和事件(如下所示)

aspx:

lblEmail.Text = email + " <a href='#' runat='server' class='crossicon' onclick='removebtn_Click'></a> ";

protected void removebtn_Click(object sender, EventArgs e)
{
}
<asp:Panel runat="server" id="pnlEmail">
     <asp:Label runat="server" id="lblEmail"/>
</asp:Panel>
而处理者将是

void lnkbtn_Click(object sender, EventArgs e)
{
      // code for your dynamically generated link
}

我不这么认为,它是动态创建的。该控件的ID在哪里。您必须创建服务器端控件并将其添加到某个占位符/面板e.t.c

默认情况下,控件使用uu doPostBack向服务器进行回发__doPostBack获取控件的唯一ID(或者在HTML中为HTML元素的name属性)。第二个参数是要激发的命令的名称

<a href='#' runat='server' class='crossicon' href="javascript:void(0);" onclick="__doPostBack('someuniqueid', '');></a> 

我希望它能对您有所帮助。

您需要编写代码来RaisePostBackEvent,而不是removebtn\u Click。