0

我有最奇怪的行为。我正在使用 ajaxcontrol 工具包来显示模态弹出窗口,它上面有一个表单。这个弹出窗口是从包含asp:linkbutton它的网页激活的(OnClientClick="aspnetForm.target ='_blank';"在它上面,我不这么认为,但也许这是相关的)。现在,如果我单击链接,则会打开另一个选项卡,其中包含新页面。当我回到原始选项卡并激活此模式弹出窗口时,如果我单击取消按钮(我在那里),则甚至不会调用回调函数(此回调只是假设隐藏弹出窗口)和我当前的选项卡被重定向到 asp:linkbutton 所指的同一页面。

一些代码:

我有一个包含以下 asp:linkbutton 的页面:

<asp:LinkButton ID="lbToBuy" runat="server" CssClass="ItemURLStyle" CausesValidation="false"
OnClientClick="aspnetForm.target ='_blank';">buy it>></asp:LinkButton>

这是来自用户控件的一行,我将其动态添加到某些搜索结果页面。后面的代码是:

lbToBuy.PostBackUrl = "~/pages/PassagePage.aspx?i=" + itemInfo.ItemID.ToString();

现在,我在原始页面中添加了另一个用户控件,它是我网站中项目的搜索栏:

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:LinkButton ID="lbAdvancedSearch" runat="server" Style="color: #f6f7ff; font-family: Arial;
                    font-size: 12px; text-decoration: underline;">Search options</asp:LinkButton>
                <asp:ModalPopupExtender runat="server" ID="AdvSearchPopupModal" TargetControlID="lbAdvancedSearch"
                    PopupControlID="pnlAdvSearch" BackgroundCssClass="modalBackground" DropShadow="false"
                    RepositionMode="RepositionOnWindowScroll">
                </asp:ModalPopupExtender>
                <asp:Panel ID="pnlAdvSearch" runat="server" CssClass="modalPopup" Style="display: none;">
                    <asp:Panel runat="server" ID="Panel3" CssClass="modalHeader">
                        Advanced search
                    </asp:Panel>
                    <div id="SearchFormWrap">
                        <div id="SearchFormBox">
                            <br />
                            <table cellspacing="5">
                                <colgroup>
                                    <col width="100px;" align="left" />
                                    <col width="300px;" />
                                </colgroup>
                                <tbody>
SOME UNIMPORTANT SEARCH CRITERION HERE
                                </tbody>
                            </table>
                            <div style="width: 280px; margin: auto; padding-bottom: 15px;">
                                <br />
                                <div style="width: 210px; height: 30px; margin: auto;">
                                    <asp:Button ID="btnQuitAdvSearch" runat="server" CssClass="myButtonShape" Style="font-size: 14px;
                                        float: left; height: 25px; width: 100px;" OnClick="btnQuitAdvSearch_Click" CausesValidation="false"
                                        Text="Cancel" />
                                    <div style="width: 3px; height: 25px; float: left;">
                                    </div>
                                    <asp:Button ID="btnAdvSearch" runat="server" class="myButtonShape" Style="font-size: 14px;
                                        float: left; height: 25px; width: 100px;" OnClick="btnAdvSearch_Click" OnClientClick="return btnSearch_OnClientClick();"
                                        CausesValidation="true" Text="Search" />
                                </div>
                            </div>
                        </div>
                    </div>
                </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>

代码隐藏:

protected void btnQuitAdvSearch_Click(object sender, EventArgs e)
{
    this.AdvSearchPopupModal.Hide();
}

现在,当我按下页面中的链接时,会按预期打开另一个带有定向链接的选项卡。当我回到原始页面并按下高级搜索按钮时,我会看到这个显示搜索条件的模式弹出窗口。如果我按下“搜索”按钮,一切都会按预期进行并形成新的搜索,但如果我按下“取消”按钮,页面将重定向到我单击的最后一个链接(在当前选项卡中,即替换原始页)。我在 btnQuitAdvSearch_Click 函数处设置了一个断点,但它从未被调用过。

有任何想法吗?

4

1 回答 1

0

好的。现在我想通了。我很马虎。尽管 Drew 为我提供了一个案例的解决方案,但这仍然没有解释问题。整个解决方案是不同的。问题是我使用了这个人在此处提供并使用的建议,OnClientClick="aspnetForm.target ='_blank';"但我没有实施他建议添加到正文 onload(那里)的修复。现在一切正常。

非常感谢德鲁。

于 2012-05-12T11:49:11.193 回答