1

我的情况是我有一个 asp.net 页面有一个表单

<form id="form1" runat="server" target="_blank">

并且一个按钮重定向到另一个页面,由于表单的 target 属性,该页面将在新窗口中打开。

<asp:Button ID="button1" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" />

我有一个下拉列表有 auto postback = true 发布过去以通过选定的数据填充另一个下拉列表。

<asp:dropdownliast id="Make" name="Make" runat="server" autopostback="true"></asp:dropdownlist>

问题是:为什么当我从自动回发下拉列表中选择项目时会打开一个空白页面?

我需要一种在不打开空白页面的情况下通过下拉列表发布页面的方法..

谢谢,

4

4 回答 4

0

由于没有更好的主意,您可以target="_blank"从标记中删除该属性,然后单击按钮时,form使用 JavaScript 修改标签并设置属性。

您可以设置OnClientClick属性并在单击它时运行 JavaScript。例如:

<asp:Button ID="button1" OnClientClick="document.getElementById('form1').setAttribute('target', '_blank')" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" />
于 2011-11-15T15:12:45.463 回答
0

您可以随时调整您的按钮按下代码以打开一个新窗口,例如:

<asp:Button ID="myBtn" runat="server" Text="Click me" 
 onclick="myBtn_Click" OnClientClick="window.open('kindofpage.aspx', 'kindofpage');" />

然后删除:

target="_blank"

从表单标签。

于 2011-11-15T15:19:19.677 回答
0

我在类似的情况下苦苦挣扎,但通过以下方式解决了它。如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[0]”替换为:

document.getElementByID('yourFormName')
于 2016-06-28T19:50:55.143 回答
-1
<form id="form1" runat="server">
于 2011-11-15T15:18:18.827 回答