我有一个委托(delegate)方法,在 WriteAnObject 上传文件时被称为周期性的。我想使用 args.PercentDone 值更新 MVC 页面中的 div (ProgressUpdate)。我很感激任何想法? 谢谢,
//委托(delegate)方法
private void displayProgress(object sender, ProgressArgs args)
{
//Console.WriteLine(args.PercentDone); //I want to display args.PercentDone in the page
}
// Controller
[HttpPost]
public ActionResult WritingAnObject(MyViewModel bovModel)
{
//DoSomeStuff which is cause calling displayProgress
return RedirectToAction("ListingSomeInfo", "testpart");
}
//查看
<%using (Html.BeginForm("WritingAnObject", "testpart", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<%:Html.TextBox("catname") %>
<input type="file" id="fileupload" name="fileupload" />
<input type="submit" value="Upload" />
<%} %>
<div id= “ProgressUpdate”</div>
最佳答案
这是一种在服务器上的操作完成时向用户显示进度的方法。 (需要 JavaScript)
1) 编写一个在服务器上启动进程的操作。此方法应该更新 session 状态中的进度值(以便它特定于用户正在运行的每个 session )。
2) 编写客户端可以调用以返回进度的操作。这将读取 session 状态中的值。通常,此操作将返回一个小 HTML 片段,其中包含填充正确数量的进度条,或者返回一个包含进度值的 JSON 对象。
3) 从客户端进行 jQuery.ajax() 调用,以在操作运行时异步轮询服务器以获取进度并更新 UI。
附加功能: - 取消长时间运行的操作的操作 - 在 Web 应用程序外部运行任务(Azure 有一些关于从 Web 应用程序异步运行任务的出色功能) - 让返回进度的操作也让客户端知道操作是否已完成或取消。
关于asp.net-mvc - 如何将进度传递到 MVC 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3867414/