C# 在新选项卡中打开HttpResponse

C# 在新选项卡中打开HttpResponse,c#,jquery,html,asp.net,httpresponse,C#,Jquery,Html,Asp.net,Httpresponse,我有以下情况。 我正在从pdf文件创建文件流。 响应后,生成的PDF将在同一选项卡中打开以打印、保存等 问题是:如何更改此代码,使其在新选项卡(或窗口)中打开 string filepath=string.Format(*文件路径*); 字符串文件名=*文件名*; 尝试 { FileStream fs=newfilestream(filepath,FileMode.Open); MemoryStream ms=新的MemoryStream(); 财政司司长(ms); var docLength=

我有以下情况。 我正在从pdf文件创建文件流。 响应后,生成的PDF将在同一选项卡中打开以打印、保存等

问题是:如何更改此代码,使其在新选项卡(或窗口)中打开

string filepath=string.Format(*文件路径*);
字符串文件名=*文件名*;
尝试
{
FileStream fs=newfilestream(filepath,FileMode.Open);
MemoryStream ms=新的MemoryStream();
财政司司长(ms);
var docLength=fs.Length;
fs.Close();
WebClient req=新的WebClient();
HttpResponse response=HttpContext.Current.response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.BufferOutput=true;
Response.ContentType=“Application/pdf”;
AddHeader(“内容处置”、“内联;文件名=“+filename”);
AddHeader(“Content-Length”,docLength.ToString());
//回答。写(“”);
//Write(“window.open(“+filepath+”,_newtab');”;
//回答。写(“”);
字节[]数据=请求下载数据(文件路径);
二进制写入(数据);
}
捕获(例外情况除外)
{
//在这里,我将异常记录到一个文本文件中。
}
最后
{
HttpContext.Current.Response.Flush();//将所有当前缓冲的输出发送到客户端。
HttpContext.Current.Response.SuppressContent=true;//获取或设置一个值,该值指示是否向客户端发送HTTP内容。
HttpContext.Current.ApplicationInstance.CompleteRequest();//使ASP.NET绕过HTTP管道执行链中的所有事件和筛选,直接执行EndRequest事件。
}
我尝试了几种选择,但仍然没有找到适合我的解决方案。 有人能帮我吗。 此功能不是由按钮直接触发的

该按钮触发另一个生成其他内容的方法,然后触发上述方法。

Response.Write(“”);
Response.Write("<script>");
Response.Write("window.open('../LOCATION/pages/FILENAME.pdf', '_newtab');");
Response.Write("</script>");
Write(“window.open('../LOCATION/pages/FILENAME.pdf','_newtab');”; 回答。写(“”);
我的代码中已经有了这段代码(在注释中,因为它不起作用),这是正确的位置还是我需要将其放在末尾?请尝试将其放在下面,但我已经尝试过了。我尝试使用“空白”而不是“新建”选项卡。仍然在同一个选项卡中打开。加载另一个页面并onload提供显示pdfDo的代码您有一个示例或链接。另一种解决方案可以是触发jQuery方法的代码隐藏方法。使用参数。但我不知道怎么做。(触发jquery方法很容易,但触发带有参数的方法对我来说是新的)。
Response.Write("<script>");
Response.Write("window.open('../LOCATION/pages/FILENAME.pdf', '_newtab');");
Response.Write("</script>");