我正在使用 ASP.NET MVC 2 和 .NET 框架 3.5。我的视图中有一个数据表,单击按钮,我在服务器端逐行处理表中的所有信息。每行操作都需要一些时间才能完成。
所以我想在处理完每一行后更新视图,比如将每一行的状态设置为待处理、进行中或完成。
我尝试使用任务并行库来处理长时间运行的进程并在处理每一行后更新会话。然后长轮询另一个 Action 方法并定期检索会话数据。如下图所示。
但我无法在此处更新会话。
public ActionResult ProcessData()
{
ModelData model = HttpContext.Session["ModelData "] as ModelData ;
Task.Factory.StartNew(() =>
{
foreach (Info item in model.DataInfo)
{
ProcessRow(item);
Session["ModelData"] = model;
}
});
return View(model);
}
public ActionResult GetLatestModel()
{
ModelData model = HttpContext.Session["ModelData"] as ModelData;
return View(model);
}
<script type="text/javascript">
$(document).ready(function() {
$("#btnSubmit").live("click", function() {
$.ajax({
url: '<%= Url.Content( "~/Process/ProcessData" ) %>',
success: function() {
setInterval(UpdateView, 5000);
}
});
});
});
function UpdateView() {
$.ajax({
url: '<%= Url.Content( "~/Process/GetLatestModel" ) %>'
});
}
</script>
我不确定如何继续进行。任何建议将不胜感激。谢谢。