如何在按钮点击时启动另一个aspx网页?

16

我有一个asp.net应用程序,用户会点击一个按钮来启动另一个页面(在同一应用程序内)。我面临的问题是原始页面和新启动的页面都应该被打开。

我尝试了response.redirect,但那往往会卸载原始页面。

有什么建议吗?


2
你是说页面应该在新窗口中打开吗? - James Johnson
5个回答

34

这个按钮可以在当前页面上发布内容的同时,在新的浏览器窗口中打开OtherPage.aspx。我认为这就是你所说的...原始页面和新启动的页面都应该被启动。

<asp:Button ID="myBtn" runat="server" Text="Click me" 
     onclick="myBtn_Click" OnClientClick="window.open('OtherPage.aspx', 'OtherPage');" />

你怎么关闭当前的窗体呢? - user2849859
@DB:不理解...只需导航到新视图不就足够了吗?为什么需要打开一个新表单,然后关闭当前表单? - Claudio Redi
1
OnClientClick="window.open('http://www.stackoverflow.com/');" 这将会打开一个新的标签页。 - JoshYates1980

17

已经修正并解决问题(感谢Shredder)

如果您想要打开一个新标签页,请尝试以下操作:

protected void Page_Load(object sender, EventArgs e)
{
    this.Form.Target = "_blank";
}

protected void Button1_Click(object sender, EventArgs e)
{

    Response.Redirect("Otherpage.aspx");
}

这将使原始页面保持打开状态,同时导致当前页面的重定向仅影响新标签页。

-J


1
截至编辑时仍然有效。我取消了删除操作,以防有人正在寻找上述解决方案的替代方法。 - KreepN
如果你的表单有多个按钮,这并不好。"_blank" 这行会导致每次点击按钮时都打开一个重复的页面。 - Zizzipupp
1
@Zizzipupp 的确如此。这在下面的答案中Nick Rolando的评论链中已经提到了8年。 - KreepN

6
如果您想使用Code Behind,我建议以下解决方案适用于asp:button -
ASPX页面
<asp:Button ID="btnRecover" runat="server" Text="Recover" OnClick="btnRecover_Click" />

代码后置

    protected void btnRecover_Click(object sender, EventArgs e)
    {
        var recoveryId = Guid.Parse(lbRecovery.SelectedValue);
        var url = string.Format("{0}?RecoveryId={1}", @"../Recovery.aspx", vehicleId);

        // Response.Redirect(url); // Old way

        Response.Write("<script> window.open( '" + url + "','_blank' ); </script>");
        Response.End();
    }

1
你应该使用:


protected void btn1_Click(object sender, EventArgs e)
{
    Response.Redirect("otherpage.aspx");
}

1
使用HTML按钮和JavaScript?在JavaScript中,window.location用于更改当前窗口的URL位置,而window.open将打开一个新窗口。
<input type="button" onclick="window.open('newPage.aspx', 'newPage');" />

编辑:啊,刚刚找到了这个:如果您的表单标签的ID是form1,请在您的ASP按钮中设置此属性。

OnClientClick="form1.target ='_blank';"

1
我的第二个(已编辑)解决方案可能会导致您的回发结果显示在新浏览器中,而旧窗口不会更改。如果您想要在当前窗口中发布并打开一个新窗口,请选择Claudio的答案。 - Nick Rolando
1
感谢你在我的解决方案中发现了问题。似乎在我以前的一个网站上使用时它能够正常工作,但是现在已经停止了这种功能。因为你,我将不得不改变我的代码 :)。 - KreepN
1
@KreepN 我只是在测试你的代码,并且如果从他们之前的请求中读取Form.Target = "_blank";,它似乎可以工作。 它设置了他们的下一个请求以在新窗口中响应。 例如:在Page_Load中设置它,所有对这个页面的后续请求都将在新窗口中打开^^ - Nick Rolando

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接