2014-01-30 166 views
0

在ASP.NET MVC 3应用程序我想用Html.BeginForm助手上传的文件,如:呼叫Html.BeginForm异步

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

从的importfile行动上传我需要返回的状态代码时(说“成功”或“失败”)并在用户界面上显示适当的警报。一种方法是异步调用表单Action,并从JS每2秒钟检查一次状态代码。 我怎样才能异步调用?或者有没有其他的方式来实现这一点?

在此先感谢。

回答

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 

在你的web服务,返回2时过程终止。收到期限信号时,回拨功能应终止观察者间隔/定时器。