首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Response.Redirect转到新窗口

Response.Redirect转到新窗口
EN

Stack Overflow用户
提问于 2008-09-19 19:05:56
回答 18查看 454.6K关注 0票数 121

我想做一个Response.Redirect("MyPage.aspx"),但在一个新的浏览器窗口中打开它。我以前在没有使用JavaScript注册脚本方法的情况下做到了这一点。我只是想不起来是怎么回事了?

EN

回答 18

Stack Overflow用户

发布于 2008-09-19 19:39:17

我只是找到了答案,并且它起作用了:)

您需要将以下内容添加到服务器端链接/按钮:

代码语言:javascript
复制
OnClientClick="aspnetForm.target ='_blank';"

我的整个按钮代码看起来像这样:

代码语言:javascript
复制
<asp:LinkButton ID="myButton" runat="server" Text="Click Me!" 
                OnClick="myButton_Click" 
                OnClientClick="aspnetForm.target ='_blank';"/>

在服务器端OnClick中,我执行了一个Response.Redirect("MyPage.aspx");,页面将在一个新窗口中打开。

你需要添加的另一个部分是固定表单的目标,否则每个链接都会在一个新窗口中打开。为此,请在弹出窗口的标题中添加以下内容。

代码语言:javascript
复制
<script type="text/javascript">
    function fixform() {
        if (opener.document.getElementById("aspnetForm").target != "_blank") return;
        opener.document.getElementById("aspnetForm").target = "";
        opener.document.getElementById("aspnetForm").action = opener.location.href;
    }
</script>

代码语言:javascript
复制
<body onload="fixform()">
票数 116
EN

Stack Overflow用户

发布于 2011-02-11 02:50:09

您可以将其用作扩展方法

代码语言:javascript
复制
public static class ResponseHelper
{ 
    public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures) 
    { 

        if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures)) 
        { 
            response.Redirect(url); 
        } 
        else 
        { 
            Page page = (Page)HttpContext.Current.Handler; 

            if (page == null) 
            { 
                throw new InvalidOperationException("Cannot redirect to new window outside Page context."); 
            } 
            url = page.ResolveClientUrl(url); 

            string script; 
            if (!String.IsNullOrEmpty(windowFeatures)) 
            { 
                script = @"window.open(""{0}"", ""{1}"", ""{2}"");"; 
            } 
            else 
            { 
                script = @"window.open(""{0}"", ""{1}"");"; 
            }
            script = String.Format(script, url, target, windowFeatures); 
            ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true); 
        } 
    }
}

这样,您就可以很好地覆盖实际响应对象

代码语言:javascript
复制
Response.Redirect(redirectURL, "_blank", "menubar=0,scrollbars=1,width=780,height=900,top=10");
票数 62
EN

Stack Overflow用户

发布于 2011-08-16 07:26:38

通过单击事件处理程序构造您的url:

代码语言:javascript
复制
string strUrl = "/some/url/path" + myvar;

然后:

代码语言:javascript
复制
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "window.open('" + strUrl + "','_blank')", true);
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/104601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档