ASP.Net MVC中长时间运行服务器调用的进度条
发布时间:2020-12-16 00:28:26 所属栏目:asp.Net 来源:网络整理
导读:我只想在长时间运行服务器调用时创建一个进度条。当控制器执行长时间运行的作业时,我无法在控制器上创建ajax发布请求。 我想创建一个额外的操作来获取当前长时间运行的任务的实际语句。 我试图在ajax请求中创建poll,然后我可以从服务器端返回状态并将其显
我只想在长时间运行服务器调用时创建一个进度条。当控制器执行长时间运行的作业时,我无法在控制器上创建ajax发布请求。
我想创建一个额外的操作来获取当前长时间运行的任务的实际语句。 解决方法
使用SignalR,最合适的方法就是做到这一点。请在
https://www.nuget.org/packages/Microsoft.AspNet.SignalR/2.1.2下载Microsoft SignalR
在名为集线器的项目路径中的单独文件夹中创建集线器类,将两个类文件添加到集线器文件夹中 Startup.cs using Owin; using Microsoft.Owin; [assembly: OwinStartup(typeof(SignalRChat.Startup))] namespace SignalRChat { public class Startup { public void Configuration(IAppBuilder app) { // Any connection or hub wire up and configuration should go here app.MapSignalR(); } } } ProgressHub.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Web; using Microsoft.AspNet.SignalR; namespace RealTimeProgressBar { public class ProgressHub : Hub { public string msg = "Initializing and Preparing..."; public int count = 1; public static void SendMessage(string msg,int count) { var message = "Process completed for " + msg; var hubContext = GlobalHost.ConnectionManager.GetHubContext<ProgressHub>(); hubContext.Clients.All.sendMessage(string.Format(message),count); } public void GetCountAndMessage() { Clients.Caller.sendMessage(string.Format(msg),count); } } } 在控制器中, // assemblies using Microsoft.AspNet.SignalR; using RealTimeProgressBar; //call this method inside your working action ProgressHub.SendMessage("initializing and preparing",2); 在视图中, <!--The jQuery library is required and is referenced by default in _Layout.cshtml. --> <!--Reference the SignalR library. --> <script src="~/Scripts/jquery.signalR-2.1.2.min.js"></script> <!--Reference the autogenerated SignalR hub script. --> <script src="~/signalr/hubs"></script> <!--SignalR script to update the chat page and send messages.--> <script type="text/javascript"> $(document).ready(function () { $("#progressBar").kendoProgressBar({ min: 0,max: 100,type: "percent",}); }); function StartInvoicing() { var progressNotifier = $.connection.progressHub; // client-side sendMessage function that will be called from the server-side progressNotifier.client.sendMessage = function (message,count) { // update progress UpdateProgress(message,count); //alert(message); }; // establish the connection to the server and start server-side operation $.connection.hub.start().done(function () { // call the method CallLongOperation defined in the Hub progressNotifier.server.getCountAndMessage(); }); } // Update the progress bar function UpdateProgress(message,count) { var result = $("#result"); result.html(message); $("#progressBar").data("kendoProgressBar").value(count); } </script> 有关详细信息,请参阅Google的帮助下的一些现有文章 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-core-mvc – 如何在启动时初始化应用程序状态并从M
- asp.net – .NET Ionic.Zip模块查杀驱动器空间
- asp.net – 实体框架第一次加载速度很慢
- asp.net – 为什么我的控件获得不同的id命名约定?
- asp.net-mvc – 什么是强类型的视图在ASP.NET MVC
- asp.net-mvc – 与asp.net MVC中的ExceptionHandlerFilter冲
- asp.net – 需要一个必须同时具有数字和字母字符的字符串的
- 在asp.net mvc 2.0中使用Html.DropDownListFor帮助器时如何
- asp.net – 在TextChanged上停止回发
- asp.net-mvc – 数据模型需要两个属性之一
推荐文章
站长推荐
- asp.net – 使用谷歌地图api的ASP .NET
- asp.net-mvc – 从IIS重写http到https的URL重写不
- asp.net – 网站和虚拟目录之间有什么区别
- asp.net – 我们应该为每个开发人员单独的数据库
- asp.net-mvc – 具有.NET MVC 5属性路由的贪婪段
- asp.net-mvc – 使用EF4转换为datetime时发生溢出
- asp.net – 从ASP .Net下载文件时,文本文件会附加
- asp.net-mvc-3 – ASP.Net MVC 3重定向未经授权的
- asp.net – 在ASP .NET(SMTP)中发送邮件
- asp.net-mvc – 如何在json post期间发生异常时阻
热点阅读