ASP.NET - onclick属性添加到Button意味着页面无法确定回发的来源

时间:2011-01-25 19:47:53

标签: javascript asp.net postback

我刚刚在ASP.NET的onclick中添加了一些JavaScript来禁用按钮(为了防止用户提交表单两次)。

当我单击此按钮时,页面回发正常但没有控制事件处理程序运行 - ASP.NET似乎无法确定哪个控件发布回页面。

我对这种意想不到的行为感到有点难过。任何人都可以解释它并提出另一种方法吗?

2 个答案:

答案 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')并检查服务器端的事件参数。