千家信息网

让Response.Redirect在新窗口打开的方法有哪些

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本篇内容介绍了"让Response.Redirect在新窗口打开的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
千家信息网最后更新 2025年11月11日让Response.Redirect在新窗口打开的方法有哪些

本篇内容介绍了"让Response.Redirect在新窗口打开的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Response.Rederect在默认情况下是在本页跳转,所以除了在js中用window.open或是给A标签添加target属性之外,在后台似乎不能来打开新的页面,其实不然,通过设置form的target属性同样可以让Response.Rederect所指向的url在新的窗口打开。下面用三种方法来实现。

1 .给form指定target属性,那么本页面中所有的Response.Rederect都将在新的窗口中打开。代码如下:

复制代码 代码如下:

protected void Page_Load(object sender, EventArgs e)
{
form1.Target = "_blank";
}



2 .用脚本针对某个控件来指定form的target,代码如下:

html代码:

复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ResponseRedirectDemo._Default" %>





ResponseRedirectDemo




Text="OpenNewWindow"/>
Text="OpenOldWindow" />





C#代码:
[code]
namespace ResponseRedirectDemo
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Attributes.Add("onclick", "this.form.target='_blank'");
Button2.Attributes.Add("onclick", "this.form.target=''");
}

protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("http://oec2003.cnblogs.com");
}

protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("http://oec2003.cnblogs.com");
}
}
}


上面的代码中点击button1在新窗口打开,点击button2在本页打开。

3 .除了设置form的target属性,要在新的窗口打开页面就只能用open,可以写个通用的方法来实现,如下:

复制代码 代码如下:

public class RedirectHelper
{
public static void Redirect(string url,
string target, string windowFeatures)
{
HttpContext context = HttpContext.Current;
if ((String.IsNullOrEmpty(target) ||
target.Equals("_self", StringComparison.OrdinalIgnoreCase)) &&
String.IsNullOrEmpty(windowFeatures))
{
context.Response.Redirect(url);
}
else
{
Page page = (Page)context.Handler;
if (page == null)
{
throw new
InvalidOperationException("Cannot redirect to new window.");
}
url = page.ResolveClientUrl(url);
string script;
if (!String.IsNullOrEmpty(windowFeatures))
{
script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
}
else
{
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
page.ClientScript.RegisterStartupScript(page.GetType(),
"Redirect", script, true);
} } }


这样就可以在程序中使用RedirectHelper.Redirect("oec2003.aspx", "_blank", "");第三个参数为open窗口的一些属性。但这样好像还不是很方便,在.net3.5中提供了扩展方法的特性,在这里也可以借用一下,将上面的静态方法实现为Response.Redirect的一个重载。具体代码如下:

复制代码 代码如下:


public static class RedirectHelper
{
public static void Redirect(this HttpResponse response,
string url, string target, string windowFeatures)
{
if ((String.IsNullOrEmpty(target) ||
target.Equals("_self", StringComparison.OrdinalIgnoreCase)) &&
String.IsNullOrEmpty(windowFeatures))
{
response.Redirect(url);
}
else
{
Page page = (Page)HttpContext.Current.Handler; if (page == null)
{
throw new
InvalidOperationException("Cannot redirect to new window .");
}
url = page.ResolveClientUrl(url);
string script;
if (!String.IsNullOrEmpty(windowFeatures))
{
script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
}
else
{
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
ScriptManager.RegisterStartupScript(page,
typeof(Page), "Redirect", script, true);
}
}
}


将该类添加到项目中后,在程序中输入Response.Redirect会发现该方法有三个重载了,这样再结合前面的form的target 就非常方便了。

另外:

Respose.Write(""); (打开简洁窗口):
Respose.Write("");

1. Response.Redirect("XXX.aspx",true)--直接转向新的页面,原窗口被代替;
2. Response.Write("")--原窗口保留,另外新增一个新页面;
3. Response.Write("")--打开新的页面,原窗口被代替;
4. Server.Transfer("XXX.aspx")--打开新的页面;
5. Response.Write("")--原窗口保留,以对话框形式打开新窗口;
6. Response.Write("")--对话框形式打开新窗口,原窗口被代替;

"让Response.Redirect在新窗口打开的方法有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

代码 方法 页面 属性 三个 内容 对话框 形式 情况 更多 知识 程序 面的 对话 实用 简洁 学有所成 接下来 中用 其实不然 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络暴力和网络安全的观点 河南企业软件开发哪家实惠 h3c服务器上uid按钮 党建引领提高网络安全 移动软件开发实验报告模板 计算机软件开发是什么意思 公司网盘如何考数据库 安卓蓝牙服务器初始化 锐思数据库怎么查审计费用 我的世界国服租赁服务器 迅雷自定义代理服务器 2022 四川专业软件开发价钱是多少 西安网络安全厂家 战略论坛网络安全人才培养体系 第七届首都网络安全日的主题 高并发软件开发 盘龙区专业性软件开发价格走势 洪山区海航网络安全维护怎么样 全国网络安全公益 数据库 标签设计 中文数据库怎么样 服务器主板开启网卡唤醒 福建国产信创服务器 太仓租车软件开发 扬州云服务器维修电话 县域医共体网络安全方案 中国台湾java软件开发前端 教育部数据库官网 公安dna数据库自己的账号 公网服务器怎么走路由
0