在 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 页面上跟踪 SQL Server 作业的进度