2014-01-30 167 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時過程終止。收到期限信號時,回撥功能應終止觀察者間隔/定時器。