Asp.net mvc 如何将进度传递到MVC页面

Asp.net mvc 如何将进度传递到MVC页面,asp.net-mvc,asp.net-mvc-partialview,Asp.net Mvc,Asp.net Mvc Partialview,我有一个委托方法,在写入上载文件的对象时被称为periodic。我想用args.PercentDone值更新MVC页面中的div(ProgressUpdate)。有什么好主意吗? 谢谢 //委托方法 private void displayProgress(object sender, ProgressArgs args) { //Console.WriteLine(args.PercentDone); //I want to display args.PercentDo

我有一个委托方法,在写入上载文件的对象时被称为periodic。我想用args.PercentDone值更新MVC页面中的div(ProgressUpdate)。有什么好主意吗? 谢谢

//委托方法

private void displayProgress(object sender, ProgressArgs args)
{
            //Console.WriteLine(args.PercentDone); //I want to display args.PercentDone in the page
}
//控制器

[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) 编写在服务器上启动进程的操作。此方法应更新会话状态中的进度值(以便它特定于用户正在运行的每个会话)

2) 编写一个客户端可以调用以返回进度的操作。这将读取会话状态中的值。通常,此操作将返回一个小的HTML片段,其中包含正确填充的进度条,或者返回一个包含进度值的JSON对象

3) 在您的客户机上,进行jQuery.ajax()调用,以便在操作运行时异步轮询服务器的进度,并更新UI

其他铃声和口哨: -取消长时间运行的操作 -在web应用程序之外运行任务(Azure具有一些关于从web应用程序异步运行任务的优秀功能)
-让返回进度的操作也让客户端知道操作是否已完成或取消。

这些选项适用于许多长时间运行的异步操作,但HTML4文件控件不是异步的。异步HTMl文件上传需要一些额外的东西。您正在寻找的是一个异步文件上传,一般来说需要
HTML5
,或者
Flash
。在这里搜索“HTML上传进度”,你会发现第一个结果是这个讨论HTML5选项的高度评价的线程-