现在......我可以做到这是一个单独的页面,但我不想!
我正在尝试创建一个服务,该服务获取项目所需的大量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()
应删除所有这些内容?
我做错了什么?或者这必须是一个单独的页面吗?
答案 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);