我刚刚在ASP.NET的onclick中添加了一些JavaScript来禁用按钮(为了防止用户提交表单两次)。
当我单击此按钮时,页面回发正常但没有控制事件处理程序运行 - ASP.NET似乎无法确定哪个控件发布回页面。
我对这种意想不到的行为感到有点难过。任何人都可以解释它并提出另一种方法吗?
答案 0 :(得分:3)
如果在回发之前禁用该按钮,则不会注册服务器端事件。
处理此问题的更简单方法是在单击后隐藏按钮,或创建一个处理程序,使第二次单击无法级联到表单帖子。
上次我在onclientclick上使用.style.display =“none”时遇到了这个问题。 禁用不仅仅是一种风格,它是一种服务器所尊重的状态。
<asp:Button ID="Button1" OnClientClick="javascript:this.style.display = 'none'"
onclick="Button1_Click" runat="server" Text="Button" />
答案 1 :(得分:2)
试试这个:
<asp:Button ID="Button1" UseSubmitBehavior="false"
OnClientClick="javascript:document.getElementById('Button1').disabled = true; __doPostBack('__Page', '');"
onclick="Button1_Click" runat="server" Text="Button" />
无需额外的请求检查即可完成。
关于如何添加onclick的评论后: 只需添加_ doPostBack(' _Page','YOURBUTTONNAME')并检查服务器端的事件参数。