steam上好的galgame:Response.Redirect 打开新窗口的两种方法

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 17:48:56

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

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

<%@ Page Language="C#" AutoEventWireup="true" %>

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



    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");
    }




    



    



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

<%@ Page Language="C#" AutoEventWireup="true" %>

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



    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");
    }




    



    



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

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

<%@ Page Language="C#" AutoEventWireup="true" %>

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



    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");
    }




    



    


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

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

 


老外用的方法是window.open,优点是可以利用js随意调节新窗的样式和尺寸,不过,国内的广告防弹插件几乎把这个方式给扼杀掉了,所以相对而言比较倾向于form,其实用超链接A也是可以,只是A.Click()方法象是在FF下不支持,所以只好用Form的get基本上可以简化成

public void ResponseRedirect(string url)
{
Response.Write("<form id=/"redirectForm/" method=/"get/" target=/"_blank/" action=/"" + url + "/"><script language=/"javascript/" type=/"text/javascript/">redirectForm.submit();</script></form>");
Response.Flush();
Response.End();
}