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

标签 javascript c# asp.net page-refresh

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

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

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

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

关于 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输入如下:

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

但它无法打开我需要的选项卡。

我也试过把 asp:LinkbuttonUpdatePanel如此示例中的控件:

<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 中猜测的那样点击。如果我在 LinkButton 旁边添加 asp 文字, 页面不刷新,但我收到一条错误消息

Uncaught TypeError: Cannot read property 'click' of null.

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

我怎样才能停止页面的重新加载,并仍然保持这些按钮的相同功能? 最好的问候!

编辑

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

在 .cs 文件中,我使用此方法注册我的脚本,以便在单击 LinkBut​​ton 后运行,如 asp.net forum 中所建议的那样:

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

最佳答案

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

The control that is registering the client script block

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

关于javascript - 如何在不刷新 ASP.NET Web 窗体中的当前页面的情况下单击打开另一个选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37989467/

相关文章:

asp.net - 在asp.net中验证字符串是否为json

javascript - ContentEditable Div 模糊事件

c# - $.getJSON 没有调用回调函数

c# - 或||条件

c# - VB.NET : What is static T (C#) in VB. 网络?

c# - 扩展方法是如何工作的?

javascript - 当我可以使用 querySelector 克隆节点时,为什么要使用cloneNode?

javascript - javascript中的动态变量名称

javascript - 奇怪但有效的 var 声明语法

ASP.Net 4.0 与 TinyMCE 和 XML 编码在回发时重新编码内容