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

Posted

技术标签:

【中文标题】在 asp.net 网络表单上更新或显示进度标签【英文标题】:Update or show progress label on asp.net web forms 【发布时间】:2021-12-05 04:02:54 【问题描述】:

我正在 asp.net 中创建一个带有文件附件的 Web 表单项目。 我放置了一个标签控件来指示进程的进度 (例如“开始进程”,几秒钟后变为“正在读取第一个记录文件”,最终标签“文件进程完成!”)。 我怎样才能实现这个程序?那需要刷新页面吗?

期待您的回复。谢谢。

【问题讨论】:

【参考方案1】:

好的,开始的过程,或者说一个像这样的漂亮 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。

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

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

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

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

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

通常,您可以(可以)在回发时启动新线程并传递值,然后有一个计时器(客户端)调用返回状态的 Web 方法。

并且该计时器必须“检查”一些状态值(比如每隔一秒),并从服务器获取一些值。由于我们没有(而且真的不能有)额外的回发,那么该 Web 方法将必须获取该状态消息。该网络方法将不得不从 session() 返回一些状态。

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

【讨论】:

感谢您在我的询问中提供想法和 sn-p。我会先做这个,然后再讨论如何实现每个文件进程的消息更改。【参考方案2】:

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

一些解决方案是:

File upload progress bar with jQuery

Upload Progress Bar in php

【讨论】:

以上是关于在 asp.net 网络表单上更新或显示进度标签的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 微信企业号办公系统-表单设计-标签(label)

如何在 ASP.Net 网络表单中使用标签?

更新面板和更新进度问题

在 ASP.NET 页面上跟踪 SQL Server 作业的进度

在 ASP.NET 控件上使用 ajax/jQuery 表单验证

带有 ASP.NET 网络表单项目的 SimpleModal 示例