将字符串作为文件下载
问题描述:
当用户单击按钮时,我想要构建一个字符串,然后让用户将该字符串作为文件下载(它是一个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文件的第一位]'附近解析错误'。
我不知所措,截稿日期即将到来。任何帮助是极大的赞赏。
答
您无法使用Ajax进行部分/异步回发。您需要将触发此下载的任何按钮设置为UpdatePanel的PostBackTrigger。详情点击这里:http://www.asp.net/Ajax/Documentation/Live/mref/T_System_Web_UI_PostBackTrigger.aspx
答
我的猜测是你在AJAX更新面板。如果您正在执行此类操作,则必须通过回传完成。
答
我先给按钮后到.ashx的处理程序(这里的这些tutorial),并把你写在您的文章(有一些小的变化也许)的代码在ProcessRequest方法处理程序。
编辑:另外,您可能对this question感兴趣。
这样做的伎俩,谢谢! – 2010-01-19 19:07:12