向后面的按钮代码添加处理程序

时间:2013-06-18 10:31:19

标签: c# asp.net webforms

我在使用包含按钮的StringBuilder后面的代码中渲染了一些html。我也试图为此添加一个处理程序,我想也许并不奇怪它不会触发。我可以用这种方式将事件处理程序包含在按钮中吗?

sb.Append("<td>");
sb.Append("<input type='button' runat='server' id='butResetPassword' value='Reset Password' onserverclick='butSendEmail_Click' />");
sb.Append("</td>");
User.InnerHtml = sb.ToString();

这是在页面后面的相同代码中出现的事件处理程序

protected void butSendEmail_Click(object sender, EventArgs e)
{
    labTester.InnerText = "Thanks for clicking me";

 }

1 个答案:

答案 0 :(得分:1)

我最近回答了你的类似问题。

除非你有充分的理由在后面的代码中生成标记,否则请将其分开,否则坚持使用经典的ASP。

你可以这样做:

标记:

<asp:Button runat="server" id="butResetPassword" OnClick="butSendEmail_Click" />

代码背后:

protected void butSendEmail_Click(object sender, EventArgs e)
{
    //Reset the password here
    labTester.InnerText = "Thanks for clicking me";
}

编辑*如果您需要做的只是显示该确认消息而不与任何数据或控件交互,那么您可以将按钮绑定到js函数,将onserverclick更改为onclick:< / p>

<input type='button' runat='server' id='butResetPassword' value='Reset Password' onclick='butSendEmail_Click' />

然后有一些j来处理这个问题:

<script type="text/javascript">
   function butSendEmail_Click() {
       alert("Thanks for clicking me");

       //Or set the labels text
       var elem = document.getElementById("labTester");
       elem.InnerHtml = "Thanks for clicking me";
   }
</script>