清除回发中的响应以从按钮单击下载文本文件

时间:2013-10-08 18:02:43

标签: asp.net download httpresponse response.write

现在......我可以做到这是一个单独的页面,但我不想!

我正在尝试创建一个服务,该服务获取项目所需的大量JS文件,压缩它们并下载单个文件,但它的作用并不是真正的问题,下载位的行为不符合预期。

来自这里的许多例子,包括: In ASP.NET, how to get the browser to download string content into a file? (C#)

我有(简化)代码:

Sub Download() Handles button.click
    var AllTheScript as string ="blah blah blah"
    Response.Buffer = True
    Response.Clear()
    Response.ClearContent()
    Response.Write(AllTheScript)
    Response.ContentType = "application/text"
    Response.AddHeader("content-disposition", "attachment; filename=myJavascript.js")
    Response.Flush()
End Sub

显然,我的页面中也有一个<asp:button id="button" runat="server"/>元素。

当我点击此按钮时,它会完成所有提取工作(上面未说明)创建文本文件并下载...非常好......

除了在JS文件的底部,它下载myJavascript.js它具有按钮所在页面的所有标记。

我的印象是Response.ClearContent()应删除所有这些内容?

我做错了什么?或者这必须是一个单独的页面吗?

2 个答案:

答案 0 :(得分:2)

如果其他人再遇到这个问题,我解决了这个问题,非常简单!

所需要的只是

Response.End()

最后!

所以完整的功能变为:

Sub Download() Handles button.click
    var AllTheScript as string ="blah blah blah"
    Response.Buffer = True
    Response.Clear()
    Response.ClearContent()
    Response.Write(AllTheScript)
    Response.ContentType = "application/text"
    Response.AddHeader("content-disposition", "attachment; filename=myJavascript.js")
    Response.Flush()
    Response.End() '///<<< Final Line Essential!
End Sub

答案 1 :(得分:0)

试试这个

var context = HttpContext.Current;

context.Response.Clear();

context.Response.ClearHeaders();

context.Response.ClearContent(); ////

context.Response.AddHeader(“content-disposition”,“attachment; filename = myJavascript.js”);

content.Response.Write(AllTheScript);