2010-01-19 61 views
1

當用戶單擊按鈕時,我想要構建一個字符串,然後讓用戶將該字符串作爲文件下載(它是一個CSV文件)。將字符串作爲文件下載

var response = HttpContext.Current.Response; 
    response.ClearContent(); 
    response.Clear(); 
    byte[] bytes = Encoding.ASCII.GetBytes(csvtext); 
    using (var stream = new MemoryStream(bytes)) 
    { 
     response.AddHeader("Content-Disposition", "attachment; filename=somefile.csv"); 
     response.AddHeader("Content-Length", stream.Length.ToString()); 
     response.ContentType = "text/plain"; 
     stream.WriteTo(response.OutputStream); 
    } 

這是我到目前爲止,我有一種感覺,我很接近,但我得到了以下錯誤消息:

微軟JScript運行時錯誤:Sys.WebForms.PageRequestManagerParserErrorException:本從服務器收到的消息無法解析。此錯誤的常見原因是,通過調用Response.Write(),響應篩選器,HttpModules或服務器跟蹤已啓用來修改響應時。 詳細信息:在'[CSV文件的第一位]'附近解析錯誤'。

我不知所措,截稿日期即將到來。任何幫助是極大的讚賞。

回答

4

我的猜測是你在AJAX更新面板。如果您正在執行此類操作,則必須通過回傳完成。

0

This可能會回答你的問題。具體而言,您應該使用「text/csv」作爲內容類型。

0

我先給按鈕後到.ashx的處理程序(這裏的這些tutorial),並把你寫在您的文章(有一些小的變化也許)的代碼在ProcessRequest方法處理程序。

編輯:另外,您可能對this question感興趣。

相關問題