1

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

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

从这里的许多示例中,包括: 在 ASP.NET 中,如何让浏览器将字符串内容下载到文件中?(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()应该删除这一切?

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

4

2 回答 2

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
于 2013-10-14T08:44:04.543 回答
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);

于 2013-10-08T19:51:28.633 回答