【问题标题】:How to open page in new tab using the response. redirect at asp.net如何使用响应在新选项卡中打开页面。在 asp.net 重定向
【发布时间】:2022-03-22 20:44:08
【问题描述】:

我想在按钮单击处理程序中使用Response.Redirect 打开一个新选项卡或一个新页面。我正在使用查询字符串来传递一些值。如何在新标签页中打开他的页面?

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    Response.Redirect("NewQuote.aspx?val=" + this.txtQuotationNo.Text);//displaying gridview in other page to print what needed
}

【问题讨论】:

标签: c# asp.net


【解决方案1】:

试试这个。这对我来说肯定有用...

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    Response.Write("<script>window.open ('NewQuote.aspx?val=" + txtQuotationNo.Text+"','_blank');</script>");
}

【讨论】:

  • 这不会打开,除非用户接受了来自站点的弹出窗口,而大多数人不会。
【解决方案2】:

简单的解决方案就在这里。

编辑您的 html 按钮元素并添加属性 OnClientClick="target ='_blank';"

<asp:Button ID="myButton" runat="server" CssClass="btn1"
            OnClick="btnSave_Click" OnClientClick="target ='_blank';" />

然后在 btnSave_Click 中

protected void btnSave_Click(object sender, EventArgs e) { 
    Response.Redirect(url);
}

【讨论】:

  • 对我不起作用,我不确定我是否期待它。但我希望它会!
  • 它确实对我有用。 @fufu 你能解释一下为什么会这样吗,我不得不承认我也不认为会这样。
  • @RickRunowski target=_blank 用于 HTML 中的超链接,从 ASP.NET 对象调用时它的工作原理相同。
  • 只需添加:OnClientClick="target ='_blank';"使用我现有的标记和代码,我现有的图像按钮对我有用。谢谢:)
  • 这对我来说很顺利,而我试图从字节流中点击打开一个 pdf :)
【解决方案3】:

你可以改变你的设计元素如下:OnClientClick

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button"  OnClientClick ="document.forms[0].target = '_blank';"  />

Javascript 代码:

 Response.Write("<script>");
 Response.Write("window.open('NewQuote.aspx' ,'_blank')");
 Response.Write("</script>");

【讨论】:

  • 我有一些代码必须在事件后面的代码中运行。最后那件事我必须重定向。但我认为作为你的答案,java 脚本代码将首先执行而不是后面的代码。
  • @krishnamohan 看看 javascript 代码
  • 好的,我会尝试你的代码...但我必须通过 NewQuote.aspx?val= 传递一些变量
【解决方案4】:

我今天遇到了同样的问题。

Response.write 对我不起作用,为了解决它,我改用 System.Web.UI.ScriptManager.RegisterClientScriptBlock。

这就是你的 btnSave 点击事件应该是这样的:

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "openModal", "window.open('NewQuote.aspx?val= "+ this.txtQuotationNo.Text+"' ,'_blank');", true);
}

注意:我使用的是 ScriptManager.RegisterClientScriptBlock,因为该按钮位于 UpdatePanel 内,如果不是您的情况,您应该尝试:

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "openModal", "window.open('NewQuote.aspx?val= " + this.txtQuotationNo.Text + "' ,'_blank');", true);
}

【讨论】:

    【解决方案5】:

    如果您使用的是 http 然后使用下面的代码

    Response.Write("<script>window.open ('URL','_blank');</script>");
    

    此代码不能用于 https 对于https,请在下面进行

    页面中的javascript

    function shwwindow(myurl) {
        window.open(myurl, '_blank');
    }
    

    在c#代码后面

     string URL = ResolveClientUrl("~") + "**internal page path**";
        ScriptManager.RegisterStartupScript(this, this.GetType(), "show window", 
        "shwwindow('"+URL+"');", true);
    

    此代码无法绕过浏览器弹出窗口阻止程序。用户必须允许它运行。 因为 ie 它在新窗口或新标签中打开,直到 ie 版本 在 Firefox 和 chrome 中它会打开新标签

    好好享受吧!

    【讨论】:

      【解决方案6】:

      重定向始终与您来自的页面位于同一页面,您无法通过重定向调用打开新窗口。

      我建议在客户端中注入一些 javascript 代码以在重新加载时打开新页面,或者更改为可以打开新页面的控件,例如具有正确 Target 属性的 LinkButton

      【讨论】:

        【解决方案7】:

        您可以使用 ScriptManager 来完成所需的操作:

        private void Redirect_New_Tab(string url_To_Open)
        {    
            string modified_URL = "window.open('" + url_To_Open + "', '_blank');";
            ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", modified_URL , true);
        }
        

        【讨论】:

        • 更多上下文会有所帮助,而不仅仅是纯代码 sn-p。
        【解决方案8】:

        当我离开目标 ='_blank' 的双引号时为我工作;

        【讨论】:

          【解决方案9】:

          Response.write 对我不起作用,所以我改用 System.Web.UI.ScriptManager.RegisterClientScriptBlock。

          System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "openModal", "window.open('NewQuote.aspx?val= "+ this.txtQuotationNo.Text+"' ,'_blank');", true);
          

          【讨论】:

            【解决方案10】:

            我在这方面花了很多时间,虽然将表单上的目标设置为 _blank 确实有效,但这意味着该页面上的所有其他控件之后都将尝试在新窗口中打开。而且您不能在服务器端操作表单,因为响应永远不会到达原始选项卡。

            所以我通过在单击按钮时将目标设置为 _blank 的组合使其工作,然后在重新设置目标后不久。

            我在页面上放了这个Javascript函数:

             <script type="text/javascript">
                function openInNewTab() {
                    document.forms[0].target = "_blank";
                    setTimeout(function () {
                        document.forms[0].removeAttribute('target'); // After 500 ms revert back to normal mode so all other controls are not affected.
                    }, 500);
                }
            

            在需要在新选项卡中打开的控件上,只需添加:

            OnClientClick="openInNewTab();"
            

            【讨论】:

              猜你喜欢
              • 2017-08-08
              • 1970-01-01
              • 2012-01-15
              • 2015-11-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多