<script type="text/javascript">
function ClientSideClick(myButton) {
//make sure the button is not of type "submit" but "button"
if (myButton.getAttribute('type') == 'button') {
// disable the button
myButton.disabled = true;
//myButton.className = "btn-inactive";
myButton.value = "Posting...";
}
return true;
}
</script>
<asp:UpdatePanel ID="upComments" runat="server" UpdateMode="Always" >
<ContentTemplate>
<asp:ListView ... >
<asp:Button ID="btnSubPostComment" runat="server" Text="Reply Comment"
CommandName="cmdPostSubComment" OnClientClick="ClientSideClick(this)" UseSubmitBehavior="false"
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
Javascript函数(ClientSideClick)在处理时禁用该按钮。
问题是当我加入时 OnClientClick =“ClientSideClick”UseSubmitBehavior =“false” 在我的按钮中,即使它位于更新面板内,也会导致完全回发。
如果删除这两个属性OnClientClic和UseSubmitBehavior,则该按钮不会导致完全回发。有谁知道为什么会这样?
我想要做的就是禁用按钮并查看它的文本以防止多次提交。
答案 0 :(得分:1)
我不确定这是否正是您正在寻找的,但我通常会使用此功能:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript">
var pbControl = null;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
pbControl = args.get_postBackElement();
pbControl.disabled = true;
}
function EndRequestHandler(sender, args) {
pbControl.disabled = false;
pbControl = null;
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:ListView ... >
<asp:Button ID="btnSubPostComment" runat="server" Text="Reply Comment" CommandName="cmdPostSubComment" OnClientClick="this.value='Posting...';" />
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
唯一的问题是,如果在第一次异步回发后再次点击相同的按钮,那么它会抛出一个&#34;由于对象的当前状态,操作无效&#34;错误。这可能以500内部服务器错误的形式显示为javascript异常。经过一些研究,我遇到了:
&#34; Microsoft最近(12-29-2011)发布了一个更新,以解决.NET Framework中的几个严重安全漏洞。最近推出了MS11-100来处理潜在的DoS攻击。不幸的是,该修复程序还破坏了具有大量发布数据(表单字段)的页面POST。 MS11-100对回发项目设置了500的限制。最近的安全更新引入的新默认最大值为1000。&#34;
Scott Gu在这里写道:http://weblogs.asp.net/scottgu/archive/2011/12/28/asp-net-security-update-shipping-thursday-dec-29th.aspx
将设置键添加到web-config文件可克服此错误:
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="2000" />
</appSettings>