我在ASP.NET wep应用程序表单上有一个按钮,当点击该按钮时,将信息发布到第三方Web服务。
我有一个与按钮关联的UpdateProgress。
如何在进度可见时禁用/隐藏按钮(即服务器尚未完成操作)
我正在考虑这样做是为了阻止用户在发送信息时再次点击(因为这会导致发送重复的信息)
答案 0 :(得分:3)
您必须将javascript方法挂钩到页面请求管理器(Sys.WebForms.PageRequestManager.getInstance()。add_initializeRequest)。这是我用来隐藏按钮的代码,我希望禁用它们(看看底部的链接是如何完成的)。
<div id="ButtonBar">
<asp:Button id= ............
</div>
<script language="javascript">
// Get a reference to the PageRequestManager.
var prm = Sys.WebForms.PageRequestManager.getInstance();
// Using that prm reference, hook _initializeRequest
// and _endRequest, to run our code at the begin and end
// of any async postbacks that occur.
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
// Executed anytime an async postback occurs.
function InitializeRequest(sender, args)
{
$get('ButtonBar').style.visibility = "hidden";
}
// Executed when the async postback completes.
function EndRequest(sender, args)
{
$get('ButtonBar').style.visibility = "visible";
}
</script>
在Why my ASP.NET AJAX forms are never submitted twice by Dave Ward了解详情。
答案 1 :(得分:1)
最简单的方法是在整个页面上放置一个半透明的png - 然后他们就无法将事件发送到下面的页面。在我看来,它看起来也很好。
在各种AJAX工具包和灯箱的模态对话框实现中,您会看到这种情况。
如果你不喜欢这种外观,你只需要使它几乎完全透明(完全透明的alpha值1不明显)。
答案 2 :(得分:0)
我还写了一篇关于此的博文,希望对你有所帮助: http://www.fitnessconnections.com/blog/post/2008/01/Disabling-a-submit-button-UpdatePanel-Update-method.aspx
干杯:)