在asp.net中基于会话值动态添加菜单

时间:2015-01-30 15:09:54

标签: c# asp.net html5

我正在开展一个项目,我必须根据用户名显示不同的菜单 我在母版页中添加了菜单 代码是

         <ul  id="ul_myLst" runat="server">
               <li><a href="Testimonials.aspx">Testimonial</a></li>

           <li><a href="About_us.aspx">About Us</a></li>
              <li><a href="Registration.aspx">Registartion</a></li>

               <li id="student" runat="server" visible="false">
                   <a href="Profile">profile</a>
                   <ul>
                       <li>
                       <a href="Profile">View profile</a>
                        </li>
                       <li>
                       <a href="Profile">Edit profile</a>
                        </li>
                   </ul>
               </li>

              <li id="abc" runat="server" visible="false" ><a href="Data.aspx">Admin</a></li>
              <li id="Li1" runat="server" visible="false" ><a href="Reports.aspx">Reports</a></li>

           </ul>

我想在用户登录时显示三个隐藏的

  • 值&#34; admin&#34;

    这是我的.cs代码

      protected void Page_Load(object sender, EventArgs e)
    {
    
        if (!string.IsNullOrEmpty(Session["UserName"] as string))
        {
    
            admin();
        }
    
    }
    private void admin()
    {
       if (Session["UserName"].ToString() == "admin")
       {
           HtmlGenericControl ul = (HtmlGenericControl)(this.FindControl("abc"));
           ul.Style["visibility"] = "visible";
       }
    }
    

    此代码没有给我任何错误,但它也没有向我显示所需的输出..

  • 4 个答案:

    答案 0 :(得分:0)

    您可以隐藏并以这种方式显示:

    ul.Style.Add("visibility","visible"); // for showing
    ul.Style.Add("display","block");
    

    并隐藏:

    ul.Style.Add("visibilty","hidden"); // for hiding
    ul.Style.Add("display","none");    
    

    答案 1 :(得分:0)

    尝试使用display属性:

    ul.Style.Add("display", "none");
    

    由于您的控件有idrunat="server",您还可以使用:

    abc.Visible = false;
    

    答案 2 :(得分:0)

    visible="false"根本不触及元素的样式。这是设置您正在操作的控件的Control.Visible属性。当此属性设置为false时,控件不会呈现给页面 - 它在最终标记中不存在。因此,在服务器端,您实际上需要admin方法:

    ul.Visible = true;
    

    答案 3 :(得分:0)

    使用此代码

        protected void Page_Load(object sender, EventArgs e)
        {
    
            if (!string.IsNullOrEmpty(Session["UserName"] as string))
            {
    
                admin();
            }
    
        }
        private void admin()
        {
            if (Session["UserName"].ToString() == "admin")
            {
                this.Page.FindControl("abc").Visible = true;
            }
        }
    

    如果您在母版页中使用,请使用此代码

    private void admin()
        {
            if (Session["UserName"].ToString() == "admin")
            {
                this.Master.FindControl("abc").Visible = true;
            }
        }
    

    感谢