OnInit 打开模式对话框两次

本文关键字:两次 对话框 模式 OnInit | 更新日期: 2023-09-27 17:56:46

我有一个 asp.net 网站,它需要登录并保存到会话中的类中。 当会话过期(或我清除它时),我需要用户再次登录,但最好不要返回主登录页面(因为用户会丢失他们到目前为止键入的所有内容)。

在母版页 OnInit 上,我检查会话是否为空,如果是,则它们已注销。 我在母版页上创建了一个 jquery 模式对话框,该对话框接收登录信息并在有效登录时重新创建会话。

这有效,但是,对话框会在

他们登录并且对话框关闭后再次打开(此时,会话不为 null)。

我尝试在登录过程中设置不同的会话值,这样它就不会打开模式对话框,但它看不到它并打开它(并且看到登录会话为空,即使它不是。

X'退出对话框,一切都很好。

有人可以告诉我哪里出错了或如何防止对话框打开两次吗?

母版页:

<script type="text/javascript">
    function showloginpopup() {
        $("#popuplogin").dialog({
            resizable: false,
            width: 320,
            height: 310,
            modal: true,
            // dialogClass: "no-close", // adding this would remove the x button
            appendTo: "form",
            buttons: {
            }
        });
    };
</script>
<asp:UpdatePanel ID="upLogin" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <div id="popuplogin" style="display: none;" class="ticker" title="Login">
            <asp:Panel ID="pnlWorkArea" runat="server" CssClass="login_workarea_panel" DefaultButton="btnLogin">
                <%-- textboxes and btnLogin for logging in --%>
            </asp:Panel>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

btnLogin 读取文本框并使用用户信息填充我的会话。

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    if (Classes.LoggedInUser.Current.loggedInUser == null) // This is returning null on 2nd time even though after first time it is set
    {
        ScriptManager.RegisterStartupScript(this, GetType(), "Show Login Popup", "showloginpopup();", true);
        loadData(); // Populate some buttons based on permissions from login
    }
}

谢谢!

OnInit 打开模式对话框两次

我有一个有点笨拙的解决方法,那就是检查我的登录对话框用户名文本框以获取值。

如果没有值,则显示对话框 - 如果有值,则不要(因为从对话框回发导致对话框重复)。

如果有人有更好的答案,请继续。