如何在没有刷新ASP.NET Web窗体中的当前页面的情况下打开另一个选项卡?

我希望能够点击一个按钮,在点击时打开另一个标签。 在我的情况下,这是使用两个ASP.Net控件完成的,一个带有

标签的asp literal将其格式化为提交按钮,因为我需要它具有一些POSTfunction。 asp literal的代码如下所示:

  

使用给定的URL_blank打开新选项卡。 我这次使用另一个asp控件,一个LinkButton ,在点击时运行一个事件,并用javascript代码触发提交asp literal的点击。 它看起来像这样:

 Do stuff 

DoStuff事件中,我需要运行一些代码,它使用上面提到的代码填充asp literal ,并在完成后触发,点击提交按钮,使用openWindowButton ID,如下所示:

 function InvokeReportFormClick() { document.getElementById("openWindowButton").click(); return false; } 

使用ScriptManager.RegisterStartupScript方法添加单击代码。

一切都运行良好,LinkBut​​ton填充文字,然后点击它,文字打开一个选项卡。 唯一的问题是页面被重新加载,我想避免这种行为。 我在脚本结束时尝试了返回false,但是如果我只从javascript方法返回false,如上所示,页面仍然重新加载,我认为这是因为生成的单击asp literal

我可以添加我在asp literal输入的onclick事件上添加return false,如下所示:

  

但它停止打开我需要的标签。

我也尝试将asp:Linkbutton放在UpdatePanel控件中,如下例所示:

     Do stuff   

但它仍然刷新页面,因为我仍然从asp literal点击猜测。 如果我在LinkButton旁边添加asp文字,页面不刷新,但我得到一个错误说

未捕获的TypeError:无法读取null的属性“click”。

我想这是因为页面没有重新加载,并且当单击操作发生时,页面中没有加载asp literal文本。

如何停止重新加载页面,并仍然保持这些按钮的相同function? 最好的祝福!

编辑

我已经注意到由asp literal提交的提交按钮不会重新加载表单,因为只需手动点击它就会打开新选项卡。 所以这种情况下的主要问题只是让asp LinkButton不会触发页面重载。

在.cs文件中,我使用此方法注册我的脚本,点击LinkBut​​ton后运行,如asp.net论坛上所建议:

RegisterStartupScript(Page page, Type type, string key, string script, bool addScriptTags)

在我意识到我使用了ScriptManager.RegisterStartupScript的错误重载之后,此问题得以解决。 我正在使用将Page作为第一个参数的方法(可以在这里找到),并且在我尝试使用以参数为参数的方法之后

正在注册客户端脚本块的控件

在msdn文档中,并作为控件发送LinkBut​​ton,它实际上工作。 该页面不再重新加载。 我希望这可以帮助有同样问题的人。