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";
}

<form id="form2" runat="server" target="_blank">

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

html代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="ResponseRedirectDemo._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ResponseRedirectDemo</title>
</head>
<body>
<form id="form2" runat="server" target="_blank">
<div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
Text="OpenNewWindow"/>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click"
Text="OpenOldWindow" />
</div>
</form>
</body>
</html>

C#代码:

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 就非常方便了。

http://www.cnblogs.com/oec2003/archive/2009/01/07/1371373.html

Response.Redirect在新窗口打开相关推荐

  1. WordPress外链新窗口打开并使用php页面go跳转

    之前浏览别人的博客网站,打开外链时会有一个等待时间的代码,虽然不知道有什么用,但觉的挺有档次..今天正好看到教程,就自己也加上了,就复制粘贴些代码可以了 首先创建一个php文件,名字随便,如果你不想改 ...

  2. phpcms v9 实现外部栏目链接在新窗口打开

        phpcms v9 栏目导航的外部链接默认在本地窗口打开,要实现外部链接在新窗口打开,可以修改模板文件heard.html,在a标签内添加一个if函数.     例如: <div cla ...

  3. 图解 wp WordPress 文章 链接 在新窗口打开

    wp WordPress 文章 链接 在新窗口打开 因为wp默认是不在新窗口打开链接的,这对于我们这样习惯关窗口的人,用起来很不方便.其实改起来很简单,下面开始 一.打开外观,选择编辑 二.打开主题页 ...

  4. html打开新窗口设置窗口属性,HTML之:让网页中的a标签属性统一设置-如‘新窗口打开’...

    在开发过程中,我们往往想在页面中,给设置一个统一的默认格式,例如我们想让链接:"在新窗口打开",我们就可以使用标签 在网页中添加这段代码: [注解] 标签为页面上的所有链接规定默认 ...

  5. 网站服务器打开新页面,什么网页适合新窗口打开?哪些网页又适合当前窗口打开?...

    原标题:什么网页适合新窗口打开?哪些网页又适合当前窗口打开? 关于网页是新窗口打开好,还是当天窗口打开好,其实没有严格规定,主要根据网站内容来确定,有些网页需要新窗口打开,有些则不需要,今天四爷推就简 ...

  6. 在HTML中,如何设置新窗口打开和在原窗口打开

    在你连接的地方代码加上target="_blank" 新窗口打开target="_parent" 同一窗口打开 或者不要加target="_paren ...

  7. php 超链接新页面打开新页面,Typecho 超链接默认新窗口打开

    本文最后更新于2021年03月17日,已超过11天没有更新.如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢! ypecho默认的超链接是在当前窗口打开的,可能是由于个人习惯问题吧,每次打开 ...

  8. php新窗口打开链接,wordpress如何设置在新窗口打开链接

    WordPress里面几乎所有的链接都是默认在当前窗口打开,无论是站外链接还是站内链接.这样的设定无忧主机小编觉得很不合理.试想:在博客网页上看到一个感兴趣的链接,点击之后就离开你的博客了,想要返回还 ...

  9. yii2: 点击编辑后,左侧的连接(a.navtab)失效,变成在新窗口打开

    如:图一 使用a.navtab的时候,点击[自定义回复]->右侧列表,随便编辑一个,完成后 图二: 再点击,左侧的菜单,打开iframe就会失败,直接在新窗口打开.源代码如下: 造成这样的原因是 ...

  10. 新窗口打开html页面,网页是选择新窗口打开还是原窗口打开?

    我本人挺喜欢原窗口打开的,如果需要打开新窗口一般是ctrl+鼠标左键,原本以为这个快捷键大家都会用呢,不过这一看法在上周改变.如果你还在纠结,可以看看本文. (主流浏览器都默认ctrl+点击=开新窗口 ...

最新文章

  1. netbios 网上基本输入输出系统 简介
  2. 集中式管理助推服装企业腾飞
  3. vb 用代码添加控件
  4. python decode hex_在python2.7中使用b64decode()将base64转换为hex
  5. c语言学习加强营(一):switch分支
  6. zemax微透镜阵列示例_阵列反向! Ruby中的示例方法
  7. 研发管理(2)---七个工作法则
  8. LeetCode(821)——字符的最短距离(JavaScript)
  9. python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
  10. 只有程序员才懂的幽默
  11. iOS9中将图片保存到照片中的某个相册的方法说明
  12. 计算机应用基础——计算机硬件(三)
  13. 从0开始实现目标检测——原理篇
  14. 第三篇 IT 技术支持工程师职业发展路径与技能要求
  15. 数据模型LP32 ILP32 LP64 LLP64 ILP64
  16. mysql 幻读的隔离_MySQL的RR隔离级别与幻读问题
  17. oracle数据库基础知识总结,我见过的最值得收藏的Oracle数据库知识点总结(III)...
  18. vue3 reactive函数用法
  19. 自媒体视频剪辑中的那些素材到哪里找?
  20. 无线电技术 | 关于无线定位技术TDOA的综合论述(一)

热门文章

  1. 【数据分析】基于matlab GUI学生成绩管理系统【含Matlab源码 601期】
  2. 【车间调度】基于matlab粒子群算法求解生产调度问题【含Matlab源码 485期】
  3. 【多目标优化求解】基于matlab粒子群算法求解智能微电网多目标优化问题【含Matlab源码 383期】
  4. 自动化机器人 rpa_机器人过程自动化和机器人的出现
  5. python备份目录下文件夹_python---备份目录和文件
  6. Selenium webdriver实现原理
  7. Linux下实现Rsync目录同步备份
  8. 继续开源还是走向封闭?谷歌未来
  9. 奇新CMS教程(一)——在奇新CMS中添加五连幅焦点图片
  10. Lotus Traveler 8.5.1的安装及配置