如何在 ASP.NET Web 窗体中单击打开另一个选项卡而不刷新当前页面?

2023-12-12

我希望能够单击一个按钮,单击该按钮即可打开另一个选项卡。就我而言,这是使用两个完成的ASP.Net控制装置,一asp literal with <form>标签将其格式化为提交按钮,因为我需要它有一些POST功能。里面的代码asp literal看起来像下面这样:

<input type='submit' id='openWindowButton' value = 'Open window'> 

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

<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton>

On DoStuff事件我需要运行一些代码,它填充asp literal使用上面提到的代码,完成后,它会触发单击提交按钮openWindowButton身份证是这样的:

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

单击的代码添加为ScriptManager.RegisterStartupScript method.

这样一切工作正常,LinkBut​​ton 填充文字,然后单击它,文字打开一个选项卡。唯一的问题是页面被重新加载,我想避免这种行为。 我已经尝试过在脚本末尾返回 false,但是如果我只从 javascript 方法返回 false,如上所示,页面仍然会重新加载,我认为这是因为生成的点击asp literal.

我可以添加我在 onclick 事件上添加 return falseasp literal输入如下:

<input type='submit' id='openWindowButton' value = 'Open window' onclick="return false;"> 

但它停止打开我需要的选项卡。

我也尝试过把asp:Linkbutton in an UpdatePanel控制如本示例所示:

<asp:ScriptManager runat="server" ID="reportScriptManager">
</asp:ScriptManager>
<asp:UpdatePanel ID="updatePanelID" runat="server">
<ContentTemplate>

<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>

但它仍然刷新页面,正如我仍然猜测的那样asp literal点击。如果我在旁边添加 asp 文字LinkButton,页面没有刷新,但我收到一条错误消息

未捕获的类型错误:无法读取 null 的属性“单击”。

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

如何停止页面的重新加载,并仍然保持这些按钮的相同功能? 此致!

EDIT

我已经说过提交按钮是由asp literal不会重新加载表单,因为简单的手动单击只会打开新选项卡。所以这种情况下的主要问题只是使aspLinkButton不触发页面重新加载。

在 .cs 文件中,我使用此方法注册要在单击 LinkBut​​ton 后运行的脚本,如建议的那样ASP.NET 论坛:

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


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

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

正如 msdn 文档中所述,并作为 LinkBut​​ton 控件发送,它确实有效。该页面不再重新加载。我希望这可以帮助遇到同样问题的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET Web 窗体中单击打开另一个选项卡而不刷新当前页面? 的相关文章

随机推荐