我希望能够单击一个按钮,单击该按钮即可打开另一个选项卡。就我而言,这是使用两个完成的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.
这样一切工作正常,LinkButton 填充文字,然后单击它,文字打开一个选项卡。唯一的问题是页面被重新加载,我想避免这种行为。
我已经尝试过在脚本末尾返回 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 文件中,我使用此方法注册要在单击 LinkButton 后运行的脚本,如建议的那样ASP.NET 论坛:
RegisterStartupScript(Page page, Type type, string key, string script, bool addScriptTags)