当前位置: 首页 > 编程语言 > C#

(MVC4)发送ProgressChanged事件到视图分享

时间:2023-04-10 20:18:17 C#

(MVC4)发送ProgressChanged事件到视图我有一个MVC4应用程序,我想推进我的进度。因此,为此,我想在我的视图中创建一个脚本,如下所示:$(document).ready(function(){varprogresspump=setInterval(function(){/*从服务器查询完成百分比*/$.ajax({type:"GET",url:"@Url.Action("GetProgressBar")",dataType:"json",cache:false,success:function(data){varpercentComplete=parseInt(data.PercentComplete);如果(percentComplete==null||percentComplete==100){$(".progress").removeClass("active");//我们完成了!$(".progress.bar").css("width","100%");}else{//更新进度条$(".progress").addClass("active");$(".progress.bar").css("width",percentComplete+"%");}},错误:函数(xhr,textStatus,thrownError){console.log(xhr.statusText);console.log(xhr.responseText);console.log(xhr.status);console.log(thrownError);}});},3000);});其中GetProgressBar给了我我想要的百分比,但是它不起作用,因为这个方法等待异步方法(ImportContact)完成他的工作......只有在上传完成时进度条方法才会更新。publicActionResultGetProgressBar(){try{if(this.Session["test"]!=null){returnJson(new{PercentComplete=this.Session["test"]},JsonRequestBehavior.AllowGet);}否则返回Json(0,JsonRequestBehavior.AllowGet);}catch{ViewBag.Error=myApplication.Web.Resources.Views.Contact.Contact.ErrorMessage;返回视图();所以,正如你所看到的(一开始),我已经实现了progressChanged事件,但我不知道如何使用它来更新我视图中的进度条......你能帮帮我吗?感谢您阅读并尝试理解这一点,如果您想了解更多,请告诉我。我不确定它是否像这样工作。在客户端和服务器事件之间工作并不像在表单应用程序中那样工作。我想要做的是让javascript定期检查后端的状态,并更新可视栏。您可以使用计时器来做到这一点,并每隔几秒检查一次setInterval(function(){/*在此处执行ajax调用*/},2000);我做了一些挖掘,结果发现使用backgroundworker可能不是最佳选择,因为它不适合MVC。我找到了一个使用工作线程的解决方案。请参阅此处:http://blog.janjonas.net/2012-01-02/asp_net-mvc_3-async-jquery-progress-indicator-long-running-tasks为了完整起见,整个部分都是关于控制器的。javascript是非常不言自明的。以上就是C#学习教程的全部内容:(MVC4)发送ProgressChanged事件给视图分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——publicActionResultStart(){vartaskId=Guid.NewGuid();tasks.Add(taskId,0);Task.Factory.StartNew(()=>{for(vari=0;i本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: