我现在遇到了很多有线问题。
我在Visual Studio 2010中使用ASP.NET。现在,当用户单击按钮时,我需要进行大量处理和网络集成。要点是,响应需要花费大量时间(约1-1.5分钟)。到那时,我必须告诉用户耐心,不要刷新页面。我试过这个按钮的第一行:
label.visible = true; //标签最初设置为不可见,并且文字说明用户要耐心。
没有运气!!!
接下来我也试过了 Response.Write(“alert('请耐心等待。')”);
没有运气!!!
这些陈述并非未执行。他们是!但实际上在处理时间结束后就完成了。即操作完成后告知用户有耐心!
我知道有一个名为autopostback的概念,但我找不到允许自动回复标签或指令的方法。谁能救我的一天?
答案 0 :(得分:1)
如果,正如我猜测的那样,你处于回发范式中意味着你启动了这个过程,并且用户只在1分钟后才得到第一个响应。或者。在这两者之间,您无法通过相同的请求向用户发送任何内容。 解决方法可能是使用ajax触发事件,以便您可以异步触发事件,向用户显示礼貌消息,并等待响应。
答案 1 :(得分:1)
您可能需要查看客户端上的一些javascript,它是在用户启动此过程时运行的。如果(例如)您通过普通的asp:Button启动该过程,则输入类似......
的内容<asp:Button runat="server" id="btnInitiate" OnClientClick="document.lblPleaseWait.style.display='';return true;" Text="Initiate"/>
<asp:Label runat="server" id="lblPleaseWait" style="display:none;">Please Wait</asp:Label>
我对jquery一无所知,但我相信这会让你更好地访问DOM中的标签对象。
您可能还想禁用btnInitiate按钮以阻止它们重复点击。为此,您需要调查UseSubmitBehavior =“false”属性
(另外,你误解了“autopostback”属性。这意味着控件 - 当更改/点击/等 - 会自动将表单发回服务器。它与响应无关 back < / em>来自服务器。)
答案 2 :(得分:1)
这就是你要做的所有事情:
<asp:Button ID="btnClick" OnClientClick="showMessage()" runat="server" Text="Click" onclick="btnClick_Click" />
<span style="display:none;" id="lblMessage">Please be patient.</span>
showMessage()是javascript函数,它应该改变lblMessage的显示样式:
<script type="text/javascript">
function showMessage() {
document.getElementById('lblMessage').style.display = 'block';
}
</script>
或者,您也可以使用ASP.Net标签控件代替span,但必须将其ClientIdMode属性设置为Static:
<style type="text/css">
.InvisibleStyle
{
display: none;
}
</style>
<asp:Button ID="btnClick" OnClientClick="showMessage()" runat="server" Text="Click" onclick="btnClick_Click" />
<asp:Label ID="lblMessage" runat="server" Text="Please be patient." ClientIDMode="Static" CssClass="InvisibleStyle" ></asp:Label>