在 C#
文件中,我有以下代码,它将文件传输到客户端:
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=SecurityPatch.exe.txt");
Response.TransmitFile(Server.MapPath("~/images/SecurityPatch.exe.txt"));
}
在.aspx
页面中,我有一些javascript
代码,但是即使使用简单的alert("hello"),JavaScript代码也永远不会执行
。只有当我像下面这样注释文件传输代码时,javacript 代码才会被执行。谁能解释为什么会发生这种情况以及我该如何解决这个问题?
protected void Page_Load(object sender, EventArgs e)
{
}
最佳答案
使用内容处置,您将输出一个文件,这样浏览器就不会在响应中执行任何 JavaScript,因为它需要文件的内容。 header 之后的所有输出都被视为文件内容,因此您不应输出任何其他内容,否则客户端最终会得到损坏的文件。
在 HTTP 中,不可能既发送文件作为内容处置,又发送一些其他内容。
我建议使用一个新页面或路由来输出文件,如果您想输出 HTML 和 JavaScript,则建议使用一个单独的页面。如果您有指向输出内容配置的页面的链接,浏览器通常不会向用户显示整个页面刷新,通常它只会显示文件保存对话框。
关于c# - ASP.NET javascript 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743992/