2012-03-23 25 views
0

我现在遇到了相当多的有线问题。处理时间后的ASP.NET响应

我在Visual Studio 2010中使用ASP.NET。现在我有一个巨大的处理加网络集成,当用户点击一个按钮。要点说,回复需要很多时间(约1-1.5分钟)。直到那时,我必须告诉用户耐心,不要刷新页面。我试过这个作为第一行按钮:

label.visible = true; //标签最初被设置为不可见,并且有文字说用户是耐心的。

不行!

接下来我也试过 Response.Write(“alert('Please be patient。')”);

不行!

这并不是说这些语句没有执行。他们是!但是在处理时间结束后实际上已经完成了。即在完成手术后告知用户耐心等待!

我知道有一些概念称为autopostback,但我找不到允许标签或指令自动回送的方法。谁能拯救我的一天?

回答

1

您可能需要查看客户端上的一些JavaScript,这是在用户启动此过程时运行的。如果(例如)您是通过正常的ASP启动过程:按钮,然后放在像...

<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”属性,这意味着控件 - 更改/点击/ etc时会自动将窗体回发到该服务器是无关的响应从服务器)

+0

你是对的。我弄错了这个概念。谢谢你纠正我..... – Kameron 2012-03-23 19:24:50

+0

工作得很好:)谢谢你的回答 – Kameron 2012-03-23 21:40:26

1

如果我猜测你处于回发范式,那意味着你启动了该过程,并且用户仅在1分钟后才得到第一个响应。或者。在这两者之间,您无法通过相同请求向用户发送任何内容。 解决方法是使用ajax触发事件,以便可以异步触发事件,向用户显示礼貌消息,并等待响应。

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标签控制,但是你必须它的ClientIDMode属性设置为静态:

<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> 
+0

工作很好:)谢谢你的回答 – Kameron 2012-03-23 21:38:23