异步调用Html.BeginForm

时间:2014-01-30 05:47:11

标签: javascript jquery asp.net-mvc-3 callback

在ASP.NET MVC 3应用程序中,我正在尝试使用Html.BeginForm帮助程序上传文件,如:

<% using (Html.BeginForm("ImportFile", "Home", new { someId = Id }, FormMethod.Post, new { enctype="multipart/form-data" } )) %>

在上传期间从ImportFile操作我需要返回状态代码(例如“成功”或“失败”)并在UI上显示适当的警报。一种方法是异步调用表单Action,并且每隔2秒就从JS检查状态代码代码。 我怎么能异步调用它?或者还有其他方法可以实现吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

请记住,HTTP协议存在限制,无法查看文件上载过程。假设您的ImportFile帮助程序可以披露此类信息,并且可以通过RESTful服务访问它,例如importstatus.aspx,以下是您可以如何获取其状态:

var statuschecker=setInterval(){
    var rq=xmlHTTPRequestObject();
    rq.open('GET','importstatus.aspx',true);
    rq.onreadystatechange=function(){
      if (rq.readyState==4&&rq.status==200){
        if (rq.responseText=='2'){
          clearInterval(statuschecker); //stop the updater
          statuschecker=null; //prevent memory leak
          return;
        }

        if (rq.responseText=='1'){
          //display that it's still being uploaded
        }
      }//xhr status
    }

    rq.send(null);
}, 1000); //poll every second

在您的网络服务中,当流程终止时返回2。当接收到术语信号时,回叫功能应该终止观察者间隔/定时器。