天天看点

Response.Redirect 打开新窗体的两种方法

普通情况下,response.redirect 方法是在server端进行转向,因此,除非使用 response.write("<script>window.location='http://dotnet.aspx.cc';</script>") 方法外,是不能在新窗体打开所指定的  url 地址的。可是,假设细致分析一下,假设设置 form 元素的 target 属性,还是有办法打开新窗体的。以下就是能够採用的两种方法。

方法一:在server端设置 target 属性,这种方法也很适用于client不支持脚本的情况。代码例如以下:

<%@ page language="c#" autoeventwireup="true" %>

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en"

 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

<script runat="server">

    protected void page_load(object sender, eventargs e)

    {

        form1.target = "_blank";

    }

    protected void button1_click(object sender, eventargs e)

        response.redirect("http://dotnet.aspx.cc");

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="head1" runat="server">

    <title></title>

</head>

<body id="b" runat="server">

<form id="form1" runat="server">

    <asp:button id="button1" runat="server" onclick="button1_click" text="打开新窗体或者新 tab " />

</form>

</body>

</html>

办法二:採用client脚本的方法设置 target 属性。代码例如以下:

        button1.attributes.add("onclick", "this.form.target='_newname'");

上面两种方法中的 target 属性能够採用不论什么合法的名称,但要注意,假设同样名称的窗体已经打开,则新窗体会在已经存在名称的窗体里打开。

更新:假设须要设置弹出窗体的宽度和高度,能够改动为以下的方法:

      string windowname = "win" + system.datetime.now.ticks.tostring();

      page.registeronsubmitstatement("js", "window.open('','" + windowname + "','width=600,height=200')");

        form1.target = windowname;

第二种弹出的方法能够參见老外的文章:

http://weblogs.asp.net/infinitiesloop/archive/2007/09/25/response-redirect-into-a-new-window-with-extension-methods.aspx