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"; }
或
<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在新窗口打开相关推荐
- WordPress外链新窗口打开并使用php页面go跳转
之前浏览别人的博客网站,打开外链时会有一个等待时间的代码,虽然不知道有什么用,但觉的挺有档次..今天正好看到教程,就自己也加上了,就复制粘贴些代码可以了 首先创建一个php文件,名字随便,如果你不想改 ...
- phpcms v9 实现外部栏目链接在新窗口打开
phpcms v9 栏目导航的外部链接默认在本地窗口打开,要实现外部链接在新窗口打开,可以修改模板文件heard.html,在a标签内添加一个if函数. 例如: <div cla ...
- 图解 wp WordPress 文章 链接 在新窗口打开
wp WordPress 文章 链接 在新窗口打开 因为wp默认是不在新窗口打开链接的,这对于我们这样习惯关窗口的人,用起来很不方便.其实改起来很简单,下面开始 一.打开外观,选择编辑 二.打开主题页 ...
- html打开新窗口设置窗口属性,HTML之:让网页中的a标签属性统一设置-如‘新窗口打开’...
在开发过程中,我们往往想在页面中,给设置一个统一的默认格式,例如我们想让链接:"在新窗口打开",我们就可以使用标签 在网页中添加这段代码: [注解] 标签为页面上的所有链接规定默认 ...
- 网站服务器打开新页面,什么网页适合新窗口打开?哪些网页又适合当前窗口打开?...
原标题:什么网页适合新窗口打开?哪些网页又适合当前窗口打开? 关于网页是新窗口打开好,还是当天窗口打开好,其实没有严格规定,主要根据网站内容来确定,有些网页需要新窗口打开,有些则不需要,今天四爷推就简 ...
- 在HTML中,如何设置新窗口打开和在原窗口打开
在你连接的地方代码加上target="_blank" 新窗口打开target="_parent" 同一窗口打开 或者不要加target="_paren ...
- php 超链接新页面打开新页面,Typecho 超链接默认新窗口打开
本文最后更新于2021年03月17日,已超过11天没有更新.如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢! ypecho默认的超链接是在当前窗口打开的,可能是由于个人习惯问题吧,每次打开 ...
- php新窗口打开链接,wordpress如何设置在新窗口打开链接
WordPress里面几乎所有的链接都是默认在当前窗口打开,无论是站外链接还是站内链接.这样的设定无忧主机小编觉得很不合理.试想:在博客网页上看到一个感兴趣的链接,点击之后就离开你的博客了,想要返回还 ...
- yii2: 点击编辑后,左侧的连接(a.navtab)失效,变成在新窗口打开
如:图一 使用a.navtab的时候,点击[自定义回复]->右侧列表,随便编辑一个,完成后 图二: 再点击,左侧的菜单,打开iframe就会失败,直接在新窗口打开.源代码如下: 造成这样的原因是 ...
- 新窗口打开html页面,网页是选择新窗口打开还是原窗口打开?
我本人挺喜欢原窗口打开的,如果需要打开新窗口一般是ctrl+鼠标左键,原本以为这个快捷键大家都会用呢,不过这一看法在上周改变.如果你还在纠结,可以看看本文. (主流浏览器都默认ctrl+点击=开新窗口 ...
最新文章
- netbios 网上基本输入输出系统 简介
- 集中式管理助推服装企业腾飞
- vb 用代码添加控件
- python decode hex_在python2.7中使用b64decode()将base64转换为hex
- c语言学习加强营(一):switch分支
- zemax微透镜阵列示例_阵列反向! Ruby中的示例方法
- 研发管理(2)---七个工作法则
- LeetCode(821)——字符的最短距离(JavaScript)
- python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
- 只有程序员才懂的幽默
- iOS9中将图片保存到照片中的某个相册的方法说明
- 计算机应用基础——计算机硬件(三)
- 从0开始实现目标检测——原理篇
- 第三篇 IT 技术支持工程师职业发展路径与技能要求
- 数据模型LP32 ILP32 LP64 LLP64 ILP64
- mysql 幻读的隔离_MySQL的RR隔离级别与幻读问题
- oracle数据库基础知识总结,我见过的最值得收藏的Oracle数据库知识点总结(III)...
- vue3 reactive函数用法
- 自媒体视频剪辑中的那些素材到哪里找?
- 无线电技术 | 关于无线定位技术TDOA的综合论述(一)
热门文章
- 【数据分析】基于matlab GUI学生成绩管理系统【含Matlab源码 601期】
- 【车间调度】基于matlab粒子群算法求解生产调度问题【含Matlab源码 485期】
- 【多目标优化求解】基于matlab粒子群算法求解智能微电网多目标优化问题【含Matlab源码 383期】
- 自动化机器人 rpa_机器人过程自动化和机器人的出现
- python备份目录下文件夹_python---备份目录和文件
- Selenium webdriver实现原理
- Linux下实现Rsync目录同步备份
- 继续开源还是走向封闭?谷歌未来
- 奇新CMS教程(一)——在奇新CMS中添加五连幅焦点图片
- Lotus Traveler 8.5.1的安装及配置