按钮从服务器端下载csv

时间:2013-10-17 19:02:50

标签: c# asp.net

所以我正在尝试创建一个下载按钮,用于创建一个填充了数据表中数据的csv文件。我试图在服务器端执行此操作(希望使此按钮适用于chrome / ie / firefox等),似乎没有任何事情发生,我似乎无法理解为什么。

protected void downloadBtn_Click(object sender, EventArgs e)
{
        Response.Clear();
        Response.ContentType = "text/csv";
        Response.AddHeader("content-disposition", "attachment; filename=Test.csv");
        Response.Write("blahblahblah");
        Response.End();
}

2 个答案:

答案 0 :(得分:2)

所以这就是我需要添加来修复我的问题。我使用UpdatePanel作为我的下载按钮,因此我需要在服务器端的Page_Load上添加以下行。

    ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
    scriptManager.RegisterPostBackControl(this.downloadBtn);

可以在此处找到更多信息:link

这解决了我“在IE / Firefox / Chrome上下载用户生成的数据”问题。

答案 1 :(得分:1)

如果您在页面上展示<input type="button">,那么您的方法可能甚至没有被调用,因为默认情况下按钮不提交表单或向服务器发出请求。

在此示例中,所有三个元素都将下载Test.csv:

<html>
<body>
<form id="downloadForm" method="get" action="/downloads/Test.csv">
<input type="button" value="Get File" onclick="javascript:document.getElementById('downloadForm').submit()">
<input type="submit" value="Submit">
</form>
<a href="/downloads/Test.csv">Test.csv</a>
</body>
</html>

如果这不是问题,那么我认为可能需要提供更多的代码和/或细节来为您提供更好的答案。