大家都知道Response.Redirect默认是在本页跳转,所以除了在JavaScript中用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="form1" 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 runat="server">
<title>ResponseRedirectDemo</title>
</head>
<body>
<form id="form1" 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://blog.youkuaiyun.com/lifengit");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("http://blog.youkuaiyun.com/lifengit");
}
}
}
上面的代码中点击button1在新窗口打开,点击button2在本页打开。