2011-05-12 63 views
1

我發現,說這是不可能做到在網絡上週圍的幾件事情,但我已經看到了不同的網站做的事情,一定像它。如何發送一個響應,並在ASP.NET MVC 3文件?

我正在尋找這樣做:

1)用戶點擊提交按鈕。

2)網站證實,一切都很好用的請求,併發送回一個網頁說:「我的工作就可以了。」

3)當它完成搗毀網站發送一個帶有結果的zip文件,然後用原來的替換「我正在處理它」頁面。

我可以通過返回帶有一堆隱藏字段和JavaScript的頁面來僞裝第2步,以立即推送隱藏的提交按鈕,但是在完成處理後仍不會重新顯示原始內容。

回答

1

你可以返回一個文件的結果:

public ActionResult DoTheCrunching() 
{ 
    if (something is wrong) 
    { 
     // redisplay the view 
     return View(); 
    } 
    // otherwise compress and return the result in the response stream 
    byte[] crunchedBuffer = ... 
    var cd = new ContentDisposition 
    { 
     FileName = "foo.zip", 
     Inline = false 
    }; 
    Response.AppendHeader("Content-Disposition", cd.ToString()); 
    return File(crunchedBuffer, "application/zip"); 
} 
+0

除此之外離開原來的畫面了,而它的準備的結果 - 這正是我試圖避免的情況。 – 2011-05-12 21:39:38

+0

@Loren Pechtel,我還以爲你是顯示使用JavaScript調用此控制器操作前的微調,不是嗎? – 2011-05-12 21:43:32

+0

如果非要但仍然沒有告訴該網站實際上得到請求的用戶。我見過太多的是實施了勞動上,其客戶端的網站,它自稱是工作時它不是。 – 2011-05-12 22:08:32