zoukankan      html  css  js  c++  java
  • Response.Redirect 打开新窗口的两种方法(转)

    一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='http://dotnet.aspx.cc';</script>") 方法外,是不能在新窗口打开所指定的  URL 地址的。但是,如果仔细分析一下,如果设置 form 元素的 target 属性,还是有办法打开新窗口的。下面就是可以采用的两种方法。

    方法一:在服务器端设置 target 属性,这个方法也非常适用于客户端不支持脚本的情况。代码如下:

    View Code
     1         <%@ Page Language="C#" AutoEventWireup="true" %>
    2
    3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    5
    6 <script runat="server">
    7
    8 protected void Page_Load(object sender, EventArgs e)
    9 {
    10 form1.Target = "_blank";
    11 }
    12
    13 protected void Button1_Click(object sender, EventArgs e)
    14 {
    15 Response.Redirect("http://dotnet.aspx.cc");
    16 }
    17 </script>
    18
    19 <html xmlns="http://www.w3.org/1999/xhtml">
    20 <head id="Head1" runat="server">
    21 <title></title>
    22 </head>
    23 <body id="b" runat="server">
    24 <form id="form1" runat="server">
    25 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="打开新窗口或者新 Tab " />
    26 </form>
    27 </body>
    28 </html>

    办法二:采用客户端脚本的方法设置 target 属性。代码如下:

    View Code
     1   <%@ Page Language="C#" AutoEventWireup="true" %>
    2
    3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    5
    6 <script runat="server">
    7
    8 protected void Page_Load(object sender, EventArgs e)
    9 {
    10 Button1.Attributes.Add("onclick", "this.form.target='_newName'");
    11 }
    12
    13 protected void Button1_Click(object sender, EventArgs e)
    14 {
    15 Response.Redirect("http://dotnet.aspx.cc");
    16 }
    17 </script>
    18
    19 <html xmlns="http://www.w3.org/1999/xhtml">
    20 <head id="Head1" runat="server">
    21 <title></title>
    22 </head>
    23 <body id="b" runat="server">
    24 <form id="form1" runat="server">
    25 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="打开新窗口或者新 Tab " />
    26 </form>
    27 </body>
    28 </html>

    上面两种方法中的 target 属性可以采用任何合法的名称,但要注意,如果相同名称的窗口已经打开,则新窗口会在已经存在名称的窗口里打开。

    更新:如果需要设置弹出窗口的宽度和高度,可以修改为下面的方法:

    View Code
     1         <%@ Page Language="C#" AutoEventWireup="true" %>
    2
    3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    5
    6 <script runat="server">
    7
    8 protected void Page_Load(object sender, EventArgs e)
    9 {
    10 string WindowName = "win" + System.DateTime.Now.Ticks.ToString();
    11 Page.RegisterOnSubmitStatement("js", "window.open('','" + WindowName + "','width=600,height=200')");
    12 form1.Target = WindowName;
    13 }
    14
    15 protected void Button1_Click(object sender, EventArgs e)
    16 {
    17 Response.Redirect("http://dotnet.aspx.cc");
    18 }
    19 </script>
    20
    21 <html xmlns="http://www.w3.org/1999/xhtml">
    22 <head id="Head1" runat="server">
    23 <title></title>
    24 </head>
    25 <body id="b" runat="server">
    26 <form id="form1" runat="server">
    27 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="打开新窗口或者新 Tab " />
    28 </form>
    29 </body>
    30 </html>

    另外一种弹出的方法可以参见老外的文章:

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

  • 相关阅读:
    [kuangbin带你飞]专题十二 基础DP1 E
    hdu 1203 I NEED A OFFER! (01背包)
    hdu 2602 Bone Collector (01背包)
    hdu 4513 吉哥系列故事——完美队形II (manacher)
    hdu 2203 亲和串 (KMP)
    hdu 1686 Oulipo (KMP)
    hdu 1251 统计难题 (字典树)
    hdu 2846 Repository (字典树)
    hdu 1711 Number Sequence (KMP)
    poj 3461 Oulipo(KMP)
  • 原文地址:https://www.cnblogs.com/leanfish/p/2229788.html
Copyright © 2011-2022 走看看