This article describes what you want:
ASP.NET MVC 3: Async jQuery Progress Indicator for Long-Term Tasks
Controller:
public class HomeController : Controller { private static IDictionary<Guid, int> tasks = new Dictionary<Guid, int>(); public ActionResult Index() { return View(); } public ActionResult Start() { var taskId = Guid.NewGuid(); tasks.Add(taskId, 0); Task.Factory.StartNew(() => { for (var i = 0; i <= 100; i++) { tasks[taskId] = i;
View:
<script type="text/javascript"> function updateMonitor(taskId, status) { $("#" + taskId).html("Task [" + taskId + "]: " + status); } $(function () { $("#start").click(function (e) { e.preventDefault(); $.post("Home/Start", {}, function (taskId) { </script> <div id="monitors"></div>
Jeroen k
source share