我希望能够点击一个按钮,在点击时打开另一个标签。 在我的情况下,这是使用两个ASP.Net控件完成的,一个带有
ASP.Net
asp literal
POST
使用给定的URL和_blank打开新选项卡。 我这次使用另一个asp控件,一个LinkButton ,在点击时运行一个事件,并用javascript代码触发提交asp literal的点击。 它看起来像这样:
URL
_blank
LinkButton
javascript
Do stuff
在DoStuff事件中,我需要运行一些代码,它使用上面提到的代码填充asp literal ,并在完成后触发,点击提交按钮,使用openWindowButton ID,如下所示:
DoStuff
openWindowButton
function InvokeReportFormClick() { document.getElementById("openWindowButton").click(); return false; }
使用ScriptManager.RegisterStartupScript方法添加单击代码。
ScriptManager.RegisterStartupScript
一切都运行良好,LinkButton填充文字,然后点击它,文字打开一个选项卡。 唯一的问题是页面被重新加载,我想避免这种行为。 我在脚本结束时尝试了返回false,但是如果我只从javascript方法返回false,如上所示,页面仍然重新加载,我认为这是因为生成的单击asp literal 。
我可以添加我在asp literal输入的onclick事件上添加return false,如下所示:
但它停止打开我需要的标签。
我也尝试将asp:Linkbutton放在UpdatePanel控件中,如下例所示:
asp:Linkbutton
UpdatePanel
但它仍然刷新页面,因为我仍然从asp literal点击猜测。 如果我在LinkButton旁边添加asp文字,页面不刷新,但我得到一个错误说
未捕获的TypeError:无法读取null的属性“click”。
我想这是因为页面没有重新加载,并且当单击操作发生时,页面中没有加载asp literal文本。
如何停止重新加载页面,并仍然保持这些按钮的相同function? 最好的祝福!
编辑
我已经注意到由asp literal提交的提交按钮不会重新加载表单,因为只需手动点击它就会打开新选项卡。 所以这种情况下的主要问题只是让asp LinkButton不会触发页面重载。
在.cs文件中,我使用此方法注册我的脚本,点击LinkButton后运行,如asp.net论坛上所建议:
RegisterStartupScript(Page page, Type type, string key, string script, bool addScriptTags)
在我意识到我使用了ScriptManager.RegisterStartupScript的错误重载之后,此问题得以解决。 我正在使用将Page作为第一个参数的方法(可以在这里找到),并且在我尝试使用以参数为参数的方法之后
正在注册客户端脚本块的控件
在msdn文档中,并作为控件发送LinkButton,它实际上工作。 该页面不再重新加载。 我希望这可以帮助有同样问题的人。