千家信息网

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

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,本篇内容介绍了"让Response.Redirect在新窗口打开的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
千家信息网最后更新 2025年02月07日让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安全错误 数据库的锁怎样保障安全 数据库技术定义及其缩写 领导干部网络安全讲座 dbf成绩数据库 北京易捷保网络技术有限公司电话 广安软件开发商家 富国互联网科技要补仓吗 杨浦区网络技术哪家强 开州区咨询软件开发流程特点 央视网网络安全工程师 软件开发和软件运维的工资 软件开发专业有哪些职业 公司网络安全规划及实施 网络安全靠人民手抄报a3 数据库技术与应用专业名人 国家网络安全宣传周视频征集 北京正联网络技术 软件开发毕业论文参考文献 服务器坏了修复多少钱 软件开发报价的计算方法 软件开发需求文档的重要性 天津会议无纸化软件开发 钛伦特软件开发有限公司怎么样 软件开发怎么转银行编制 数据库两个语句执行结果相加 腾讯的软件开发 易语言数据库怎么查询最大值 杭州屯云网络技术有限公司 山东济南市联想服务器服务 服务器管理网口ip查询方法 学习网络安全心得100字样
0