ASP.NET处理后的响应时间

时间:2012-03-23 18:56:53

标签: asp.net visual-studio visual-studio-2010 postback

我现在遇到了很多有线问题。

我在Visual Studio 2010中使用ASP.NET。现在,当用户单击按钮时,我需要进行大量处理和网络集成。要点是,响应需要花费大量时间(约1-1.5分钟)。到那时,我必须告诉用户耐心,不要刷新页面。我试过这个按钮的第一行:

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

没有运气!!!

接下来我也试过了 Response.Write(“alert('请耐心等待。')”);

没有运气!!!

这些陈述并非未执行。他们是!但实际上在处理时间结束后就完成了。即操作完成后告知用户有耐心!

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

3 个答案:

答案 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>