当用户点击按钮时,我想构建一个字符串,然后让用户将该字符串下载为文件(它是一个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);
}
这是我到目前为止所做的,我感觉我非常接近,但是我收到以下错误消息:
Microsoft JScript运行时错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。此错误的常见原因是通过调用Response.Write(),响应过滤器,HttpModules或服务器跟踪来修改响应。 详细信息:在“[CSV文件的第一位]”附近解析时出错。
我很茫然,截止日期快到了。非常感谢任何帮助。
答案 0 :(得分:4)
我的猜测是你在AJAX更新面板中。如果您正在执行此类操作,则必须通过回发来完成。
答案 1 :(得分:2)
使用Ajax进行部分/异步回发无法做到这一点。您需要在触发此按钮的任何按钮上为UpdatePanel下载PostBackTrigger。详情请见http://www.asp.net/Ajax/Documentation/Live/mref/T_System_Web_UI_PostBackTrigger.aspx
答案 2 :(得分:0)
This可能会回答您的问题。具体来说,您应该使用“text / csv”作为内容类型。
答案 3 :(得分:0)
我会让按钮发布到.ashx处理程序(这里是tutorial)并将处理过的代码(可能还有一些小改动)放在处理程序的ProcessRequest方法中
编辑:此外,您可能对this question感兴趣。