从回传发送对新 window 的响应?
Send response to a new window from a postback?
我的 vb asp.net 应用程序中的示例
回发时
// ... do stuff
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.OutputStream.Write(fileData, 0, fileData.Length)
Response.End()
我尝试了多种方法,但 google 并没有向我的搜索者提供太多有关使用脚本 document.forms[0].target = "_blank";
和其他技术(例如创建单独的 aspx 页面并将二进制文件存储在会话中)的信息然后在加载函数中提供它。
想也许你们中的一个可以成为我的拯救者,在此先感谢
编辑:最近尝试 This guys solution 但没有成功。
它不需要在回传中发生。您可以创建 PDF 并通过通用处理程序 (.ashx) 提供它。在您的 ASPX 页面上,您可以打开一个新的 window,其中 URL 指向 .ashx 页面,通过查询字符串传递任何必要的参数。下面是 C#,但我想你会明白的。
PDFCreator.ashx
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.Clear();
context.Response.Buffer = true;
context.Response.ContentType = "application/pdf";
var fileData = Database.GetFileData(); //this might be where you grab the query string parameters and pass them to your function that returns the PDF stream
context.Response.OutputStream.Write(fileData, 0, fileData.Length);
context.Response.End();
}
public bool IsReusable
{
get {return false;}
}
}
ASPX 页面 Javascript
window.open("PDFCreator.ashx", "_blank");
//or
window.open('<%= ResolveClientUrl("~/PDFCreator.ashx") %>', '_blank');
如果您仍希望它在使用通用处理程序技术回发后发生,请尝试此操作(再次使用 C#):
ClientScriptManager.RegisterStartupScript(this.GetType(), "openpdf", "window.open('PDFCreator.ashx', '_blank');", true); //You can also use ResolveClientUrl if necessary
我的 vb asp.net 应用程序中的示例
回发时
// ... do stuff
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.OutputStream.Write(fileData, 0, fileData.Length)
Response.End()
我尝试了多种方法,但 google 并没有向我的搜索者提供太多有关使用脚本 document.forms[0].target = "_blank";
和其他技术(例如创建单独的 aspx 页面并将二进制文件存储在会话中)的信息然后在加载函数中提供它。
想也许你们中的一个可以成为我的拯救者,在此先感谢
编辑:最近尝试 This guys solution 但没有成功。
它不需要在回传中发生。您可以创建 PDF 并通过通用处理程序 (.ashx) 提供它。在您的 ASPX 页面上,您可以打开一个新的 window,其中 URL 指向 .ashx 页面,通过查询字符串传递任何必要的参数。下面是 C#,但我想你会明白的。
PDFCreator.ashx
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.Clear();
context.Response.Buffer = true;
context.Response.ContentType = "application/pdf";
var fileData = Database.GetFileData(); //this might be where you grab the query string parameters and pass them to your function that returns the PDF stream
context.Response.OutputStream.Write(fileData, 0, fileData.Length);
context.Response.End();
}
public bool IsReusable
{
get {return false;}
}
}
ASPX 页面 Javascript
window.open("PDFCreator.ashx", "_blank");
//or
window.open('<%= ResolveClientUrl("~/PDFCreator.ashx") %>', '_blank');
如果您仍希望它在使用通用处理程序技术回发后发生,请尝试此操作(再次使用 C#):
ClientScriptManager.RegisterStartupScript(this.GetType(), "openpdf", "window.open('PDFCreator.ashx', '_blank');", true); //You can also use ResolveClientUrl if necessary