Razor跳转引发sessionStorage判断异常,菜单显示错误求助
问题分析与解决方案
我来帮你拆解下这个问题的核心原因:
你当前的退出登录点击事件代码里,先执行了页面跳转,之后才去清除sessionStorage——这就导致跳转操作会立即中断当前页面的JS执行,后面的sessionStorage.setItem("TipoUtente", null);和sessionStorage.setItem("Utente", null);根本没机会运行!
所以当首页(Index)加载时,sessionStorage里的Utente还是登录状态下的值,布局页的document ready逻辑自然就走进了else分支,出现你看到的异常情况。而删除跳转代码后,清除存储的代码能正常执行,布局页的逻辑也就恢复正常了。
修正后的退出登录代码
只需要调整代码顺序,先清除sessionStorage,再执行页面跳转:
$('#Logoutmenu').click(function (e) { // 先清除会话存储,确保跳转前状态已更新 sessionStorage.setItem("TipoUtente", null); sessionStorage.setItem("Utente", null); // 再执行页面跳转 window.location.href = '@Url.Action("Index", "Home")'; // 注:下面的DOM操作可以直接删除 // 因为页面马上就会跳转,当前页面的DOM修改不会生效 // $("#Loginmenu").removeClass("nav navbar-nav hidden").addClass("nav navbar-nav show"); // $("#Logoutmenu").removeClass("nav navbar-nav show").addClass("nav navbar-nav hidden"); // $("#topmenu").removeClass("nav navbar-nav show").addClass("nav navbar-nav hidden"); });
关于布局页逻辑的补充
你的布局页document ready逻辑是完全正确的:只要sessionStorage里的Utente为null,就会自动切换到登录菜单状态。只要保证跳转前成功清除了Utente,首页加载时就会正常进入if分支,完美实现你想要的“退出后隐藏菜单并跳转首页”的效果。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

