我正在使用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>");
}
但它无论如何都不起作用。
答案 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;的参数为了打开一个标签而不是一个窗口,这只是你的解决方案所指出的风格问题。