我的情况是,我有一个包含表单的asp.net页面
<form id="form1" runat="server" target="_blank">
按钮重定向到另一个页面,由于表单的目标属性,此页面将在新窗口中打开。
<asp:Button ID="button1" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" />
我有一个dropdownlist,它有auto postback = true,用来通过选择的数据来填充另一个dropdownlist。
<asp:dropdownliast id="Make" name="Make" runat="server" autopostback="true"></asp:dropdownlist>
问题是:为什么当我从自动回发的下拉列表中选择项目时,会打开一个空白页面?
我需要一种方法来通过下拉列表张贴页面,而不打开空白页面。
谢谢,
发布于 2011-11-15 23:12:45
如果没有更好的方法,您可以从标记中删除target="_blank"
属性,当您的按钮被单击时,使用JavaScript修改form
标记并设置该属性。
您可以设置OnClientClick属性并在单击时运行JavaScript。例如:
<asp:Button ID="button1" OnClientClick="document.getElementById('form1').setAttribute('target', '_blank')" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" />
发布于 2011-11-15 23:19:20
您可以随时调整您的按钮按下代码来打开一个新窗口,如下所示:
<asp:Button ID="myBtn" runat="server" Text="Click me"
onclick="myBtn_Click" OnClientClick="window.open('kindofpage.aspx', 'kindofpage');" />
然后删除:
target="_blank"
从表单标签。
发布于 2016-06-29 03:50:55
我在类似的情况下挣扎过,但用下面的方法解决了它。正如在this answer中提到的,您可以使用OnClientClick属性将目标设置为"_blank“。例如。
<asp:Button ID="button1" OnClick="codebehind_method" OnClientClick="document.forms[0].target = '_blank';" runat="server" Text="targets new window" />
然后,在我的"codebehind_method“函数重定向到的aspx页面中,我重置了打开表单的目标,如下所示:
<script type="text/javascript">
function resetTarget() {
opener.document.forms[0].target = '';
}
</script>
<body onload="resetTarget()">
现在,如果您返回到打开窗体并使用未设置"OnClientClick“属性的控件,则AutoPostBack应该出现在相同的选项卡中。如果要按ID查找表单,请将"document.forms“替换为:
document.getElementByID('yourFormName')
https://stackoverflow.com/questions/8138416
复制相似问题