从菜单中删除特定项目并通过 asp.net 中的内容页面替换新菜单

本文关键字:菜单 替换 新菜单 asp 删除 项目 net | 更新日期: 2023-09-27 18:31:42

我的母版页中有一个菜单和标签,我想根据登录的用户类型进行更新。

首先,我从菜单中删除一些工作正常但未显示在母版页中的菜单项。相反,旧菜单也仅与受限用户的所有菜单项一起显示。当我调试标签文本时,显示我设置的内容,但是当页面加载时,它也不会更新。

我使用以下代码。

Label lbWelcomeMessage = new Label();
    protected void Page_Load(object sender, EventArgs e)
    {
        Master.FindControl("CAMenu").Visible = false;
    }
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        string userName = txtUsername.Text;
        string password = txtPassword.Text;
        Common common = new Common();
        DataTable tab = new DataTable();
        tab= common.GetUserDetails(userName);
        string firstName = string.Empty;
        string userPassword = string.Empty;
        string RoleID=string.Empty;
        if (tab.Rows.Count == 1)
        {
            firstName = tab.Rows[0][2].ToString();
            userPassword = tab.Rows[0][4].ToString();
            RoleID = tab.Rows[0][5].ToString();
        }
        if (userPassword == password)
        {
            if (RoleID != "1")
            {
                Menu CAMenu = new Menu();
                CAMenu = (Menu)Master.FindControl("CAMenu");
                int count = CAMenu.Items.Count;
                for (int i = 3; i > 0; i--)
                {
                    string text = CAMenu.Items[i - 1].Text;
                    CAMenu.Items.RemoveAt(i - 1);
                }
                lbWelcomeMessage = (Label)Master.FindControl("lbLoginMessage");
                lbWelcomeMessage.Text = "Welcome"+" "+ firstName;
                ((SiteMaster)Page.Master).MyText = lbWelcomeMessage.Text;
                Response.Redirect("AdHocSMS.aspx");
            }
            else
            {
                lbWelcomeMessage = (Label)Master.FindControl("lbLoginMessage");
                lbWelcomeMessage.Text = lbWelcomeMessage.Text+" "+firstName ;
                Response.Redirect("NewTemplate.aspx");
            }
        }
    }

从菜单中删除特定项目并通过 asp.net 中的内容页面替换新菜单

我假设您在登录名中编写了此代码.aspx。单击登录按钮后,它会将您带到另一个页面,并且页面的所有生命周期将再次运行。并重置母版页内容。

这个问题的解决方案可能是。将此逻辑移动到母版页代码中,如下所示

protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        if (Session.Count == 0 || Session["Username"] == null)
            Response.Redirect("~/Login.aspx", true);
        CheckRole();
    }
    public void CheckRole()
    {
        if (System.Web.HttpContext.Current.Session.Count > 0)
        {
            tab= common.GetUserDetails(Session["Username"]);
            if (tab.Rows.Count == 1)
         {
                 firstName = tab.Rows[0][2].ToString();
                 userPassword = tab.Rows[0][4].ToString();
                 RoleID = tab.Rows[0][5].ToString();
        }
           if (RoleID != "1")
            {
                 Menu CAMenu = new Menu();
                 int count = CAMenu.Items.Count;
                 for (int i = 3; i > 0; i--)
                  {
                    string text = CAMenu.Items[i - 1].Text;
                    CAMenu.Items.RemoveAt(i - 1);
                  }
    //your label logic
            lbWelcomeMessage.Text = "Welcome"+" "+ firstName;
            ((SiteMaster)Page.Master).MyText = lbWelcomeMessage.Text;
            Response.Redirect("AdHocSMS.aspx");
        }
        else
        {
    //Logic
            Response.Redirect("NewTemplate.aspx");
        }
    }
    else
    {
        Session.Abandon();
        Response.Redirect("~/Login.aspx", true);
    }
}

您必须在会话中放置UserId或用户名,这是一个缺点,但是对于每个页面,您不必担心任何事情。

有关生命周期,请阅读本文 http://msdn.microsoft.com/en-us/library/ms178472.aspx

让我知道它是否解决了。

我所做的是这样的

In Site.Mater:-

  public void CheckRole()
    {
        try
        {
            if (System.Web.HttpContext.Current.Session.Count > 0)
            {
                string firstName = string.Empty;
                // string userPassword = string.Empty;
                string RoleID = string.Empty;
                Common common = new Common();
                DataTable tab = new DataTable();
                string userName = (string)Session["UserName"];
                User user = new User(userName);
                tab = user.GetUserDetails(userName);
                if (tab.Rows.Count == 1)
                {
                    firstName = tab.Rows[0][1].ToString();
                    RoleID = tab.Rows[0][3].ToString();
                }
                if (RoleID != "1")
                {
                    int count = CAMenu.Items.Count;
                    if (count == 5)
                    {
                        for (int menuCount = 3; menuCount > 0; menuCount--)
                        {
                            string text = CAMenu.Items[menuCount - 1].Text;
                            CAMenu.Items.RemoveAt(menuCount - 1);
                        }
                    }
                    lbLoginMessage.Text = "Welcome," + " " + firstName;
                    loginStatus.Visible = true;
                }
                else
                {
                    lbLoginMessage.Text = "Welcome," + " " + firstName;
                    loginStatus.Visible = true;
                }
            }
            else
            {
                Session.Abandon();
                Response.Redirect("~/Login.aspx", true);
            }
        }
        catch (Exception ex)
        {
            new Logger().Log("ShortCom.SiteMaster.CheckRole()", ex.Message);
            Response.Redirect("~/Error.aspx");
        }
    }

在登录中.Apsx:-

 protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            Master.FindControl("CAMenu").Visible = false;
            Master.FindControl("loginStatus").Visible = false;
        }
        catch (Exception ex)
        {
            new Logger().Log("ShortCom.Login.btnLogin_Click(object sender, EventArgs e)", ex.Message);
            Response.Redirect("~/Error.aspx");
        }
    }
    protected void LoadMessageBox(string MessageID)
    {
        try
        {
            messages = new GUIMessages();
            popupExtend = new ModalPopupExtender();
            lbMessage = (Label)Master.FindControl("label5");
            lbMessage.Text = messages.GetGUIMessage(GUIModule.Login, MessageID);
            popupExtend = (ModalPopupExtender)Master.FindControl("popupExtender");
            popupExtend.Show();
        }
        catch (Exception ex)
        {
            new Logger().Log("ShortCom.Login.LoadMessageBox(string MessageID)", ex.Message);
            Response.Redirect("~/Error.aspx");
        }
    }
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        try
        {
            string userName = txtUsername.Text;
            string password = txtPassword.Text;
            if (userName == string.Empty && password == string.Empty)
            {
                LoadMessageBox("5");
                txtUsername.Focus();

                return;
            }
            if (userName == string.Empty)
            {
                LoadMessageBox("1");
                txtUsername.Focus();
                return;
            }
            else if (password == string.Empty)
            {
                LoadMessageBox("3");
                txtPassword.Focus();
                return;
            }
            User user = new User(userName);
            DataTable tab = new DataTable();
            tab = user.GetUserDetails(userName);
            string firstName = string.Empty;
            string userPassword = string.Empty;
            string RoleID = string.Empty;
            string userID = string.Empty;
            Session["UserName"] = userName;
            if (tab.Rows.Count == 0)
            {
                LoadMessageBox("6");
                txtPassword.Text = string.Empty;
                txtUsername.Text = string.Empty;
                txtUsername.Focus();
                return;
            }
            if (tab.Rows.Count == 1)
            {
                userID = tab.Rows[0][0].ToString();
                firstName = tab.Rows[0][1].ToString();
                userPassword = tab.Rows[0][2].ToString();
                RoleID = tab.Rows[0][3].ToString();
                Session["UserID"] = userID;
            }
            //if (firstName != userName)
            //{
            //    LoadMessageBox("2");
            //    txtUsername.Focus();
            //    return;
            //}
            //else
            {
                if (userPassword == password)
                {
                    Response.Redirect("~/Default.aspx");
                }
                else
                {
                    LoadMessageBox("4");
                    txtPassword.Focus();
                    return;
                }
            }
        }
        catch (Exception ex)
        {
            new Logger().Log("ShortCom.Login.btnLogin_Click(object sender, EventArgs e)", ex.Message);
            Response.Redirect("~/Error.aspx");
        }
    }