设置菜单项单击事件以调用注销功能
本文关键字:调用 注销 功能 事件 菜单项 单击 设置 | 更新日期: 2023-09-27 18:31:12
我有一个菜单项"登录"导航到登录页面。 当用户登录时,我将该菜单项的文本更改为"注销"。 单击后,我希望它返回以清除会话,转到登录页面,并将文本更改回"登录"。 这行得通...有点。 我遇到的问题是我不知道在单击菜单项时如何调用函数,因此当用户单击"注销"时,登录页面加载并在页面加载时清除会话,但由于在页面加载之前未清除,因此仍然看起来有一个会话(用户名仍然出现, 并且菜单项文本不会更改)。 如何设置它,以便在单击"注销"中清除会话,而不是在加载登录页面时清除会话?
这是我的菜单代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LeftSideMenu.ascx.cs" Inherits="EVMAnywhereWeb.Controls.LeftSideMenu" %>
<div id="leftSideMenu">
<asp:menu ID="menu1" runat="server" Orientation="Vertical" RenderingMode="List">
<StaticMenuItemStyle VerticalPadding="5" />
<DynamicMenuItemStyle VerticalPadding="5" />
<Items>
<asp:menuitem navigateurl="~/Login.aspx" Text="Login" Value="Login"></asp:menuitem>
<asp:menuitem navigateurl="~/Register.aspx" Text="Register" Value="Register"></asp:menuitem>
<asp:menuitem navigateurl="~/Projects.aspx" Text="Projects" Value="Projects"></asp:menuitem>
<asp:menuitem navigateurl="~/Dictionary.aspx" Text="Dictionary" Value="Dictionary"></asp:menuitem>
</Items>
</asp:menu>
</div>
这是我用来更改文本的代码(在代码隐藏中):
protected void Page_Load(object sender, EventArgs e)
{
if (Session["SessionUserName"] != null)
{
menu1.Items[0].Text = "Logout";
menu1.Items[1].Text = "My Account";
}
}
在登录页面代码隐藏中,我有这个来清除会话:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["SessionUserName"] != null)
{
Session.Abandon();
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
}
}
调用代码以清除 OnInit 中的会话,而不是Page_Load。