zoukankan      html  css  js  c++  java
  • 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 属性。代码例如以下:

    <%@ 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)
        {
            Button1.Attributes.Add(
    "onclick""this.form.target='_newName'");
        }

        
    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>

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

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

    <%@ 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)
        {
          
    string WindowName = "win" + System.DateTime.Now.Ticks.ToString();
          Page.RegisterOnSubmitStatement(
    "js""window.open('','" + WindowName + "','width=600,height=200')");
            form1.Target 
    = WindowName;
        }

        
    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>

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

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

  • 相关阅读:
    LeetCode偶尔一题 —— 617. 合并二叉树
    《剑指offer》 —— 链表中倒数第k个节点
    《剑指offer》 —— 青蛙跳台阶问题
    《剑指offer》—— 二维数组中的查找
    《剑指offer》—— 替换空格
    《剑指offer》—— 合并两个排序的链表
    《剑指offer》—— 礼物的最大价值
    生成Nuget 源代码包来重用你的Asp.net MVC代码
    Pro ASP.Net Core MVC 6th 第四章
    Pro ASP.NET Core MVC 6th 第三章
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4279214.html
Copyright © 2011-2022 走看看