在新标签页asp.net中打开页面

时间:2012-08-09 17:34:33

标签: c# asp.net redirect response

我正在使用ASP.NET C#编写项目。

我想实现linkbutton click事件以在新选项卡中打开新页面,但在我必须创建新的会话变量之前。我试过这个:

protected void LinkButton_Click3(Object sender, EventArgs e)
        {
            string p_id = (sender as LinkButton).CommandArgument;
            Session["p_id"] = p_id;
            Response.Write("<script type='text/javascript'> window.open('details.aspx','_blank'); </script>");

        }

但它无论如何都不起作用。

3 个答案:

答案 0 :(得分:1)

根据您的评论,您应该禁用弹出窗口拦截器。

答案 1 :(得分:0)

试试这个,在按钮点击或document.ready上调用此功能仅在您要重定向的页面上。

<script type="text/javascript">
function newTab() 
{
  if (opener.document.getElementById("aspnetForm").target != "_blank") return;   

opener.document.getElementById("aspnetForm").target = "";
opener.document.getElementById("aspnetForm").action = opener.location.href;

}

</script

或将其添加到linkbutton html

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

答案 2 :(得分:0)

有时我只能将管理代码动态调用的任何内容声明为javascript函数,然后从内部调用它。 ClientScript类中的RegisterClientScriptBlock方法:

Daclare window.open函数:

    <script type="text/javascript">
        function SetRedirect(URI) {
           window.open(URI, "Details", "menubar=no, location=no, resizable=yes, scrollbars=yes, status=yes, width = 1200, height = 600");
        }
    </script>

从类后面的代码中只有一个网关调用者来到这个函数,如:

void MessageGateway(string URI)
{
    this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
        "logCallBack", @"<script type=""text/javascript"">SetRedirect('" + URI + "');</script>");
}

就是这样,你可以像往常一样用你的东西称呼这个网关,

MessageGateway(string.Format("../IRMQueryPO.aspx?id={0}", e.Item.Cells[2].Text));

您可以尝试发送&#34; target&#34;带&#34; _blank&#34;的参数为了打开一个标签而不是一个窗口,这只是你的解决方案所指出的风格问题。