我有一个asp.net网站,它登录并保存到会话中的类。当会话到期时(或当我清除它)时,我需要用户再次登录,但最好不要回到主登录页面(因为用户丢失了他们已经输入的所有内容)。
在主页OnInit上,我检查会话是否为空,如果是,则将其注销。我在我的主页面上创建了一个jquery模式对话框,它接收登录信息并在有效登录时重新创建会话。
这样可行,然后,对话框在他们登录并且对话框已关闭后再次打开(此时,会话不为空)。
我已尝试在登录过程中设置不同的会话值,因此无法打开模式对话框,但它无法看到并打开它(并且看到登录会话已有即使它不是,也是空的。
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
}
}
谢谢!
答案 0 :(得分:0)
我有一个有点笨拙的解决方法,那就是检查我的登录对话框用户名文本框中的值。
如果没有值,则显示对话框 - 如果有值,则不显示(因为对话框的回发导致重复的对话框)。
如果有人有更好的答案,请继续。