在 asp.net 个网络表单上更新或显示进度标签

Update or show progress label on asp.net web forms

我正在 asp.net 中创建带有文件附件的 Web 表单项目。 我放置了一个标签控件来指示流程的进度 (例如 'Starting process',几秒钟后更改为 'Reading 1st record file',最终标签 'File process complete!')。 我怎样才能实现这个例程?这需要刷新页面吗?

期待您的回复。谢谢。

好的,好的开始过程或者说一个像这样的漂亮的gif:

所以,第一个消息,或者动画是没有问题的。

其他信息?嗯,除非你伪造这个,否则要困难得多。

所以,举个简单的例子,假设我们有一个按钮需要很长时间(比如 4 秒)。

所以,我们说这个按钮:

        <asp:Button ID="cmdProcess" runat="server" Text="Big process" 
            CssClass="btn"
            OnClick="cmdProcess_Click"
            OnClientClick="showwait()" />

        <script>
            function showwait() {
                $("#MyProgress").show()
            }
        </script>

        <div id="MyProgress" style="display:none">
            <h2>Working</h2>
            <img src="../Content/wait2.gif" style="height: 67px; width: 80px" />
        </div>

因此,当您单击上面的按钮时,它会 运行 一个客户端例程(显示我们的 div),然后是服务器端代码,如下所示:

    protected void cmdProcess_Click(object sender, EventArgs e)
    {
        Thread.Sleep(4000);
    }

所以,你有这个:

当你点击按钮时,你会看到这句话持续 4 秒:

所以,这很简单,因为我们只显示 div。

还有奖金?好吧,既然按钮是post-back,那么当按钮代码完成后,客户端当然会重新刷新,现在我们的“延迟div”不再显示了。

但是,如果您想更改消息,请说:

工作第 1 部分......

然后工作第 2 部分 .....

然后我将开始这个“漫长”的过程作为网络方法。这可能很困难,因为您调用的任何 Web 方法都不会使用所有页面控件。

通常,您可以(可能)在 post 后面,启动一个新线程,传递值,然后有一个计时器(客户端)调用一个网络方法 return是状态。

并且该计时器必须“检查”一些状态值(比如每隔一秒),并从服务器获取一些值。由于我们没有(而且真的不能有)额外的 post-backs,那么该 web 方法将必须获取该状态消息。该 Web 方法可能必须 return 来自 session() 的一些状态。

所以当你点击一个按钮时显示“一个”消息? 很简单。

上传过程的进度可以使用 ajax 上传而不是常规上传来实现。您需要创建一个 Web 服务,它将接受文件作为输入,然后 post 接受它。完成后可以隐藏进度条。

一些解决方案是:

File upload progress bar with jQuery

Upload Progress Bar in PHP