使用c动态更改html控件样式

本文关键字:html 控件 样式 动态 使用 | 更新日期: 2023-09-27 18:27:46

我想创建一个网站,如果管理员通过admin.aspx登录我想在菜单列表中再添加一个导航。我的菜单列表由<ul>...<li>组成,即html控件那么我如何在主页菜单中动态添加新的

  • 否则最初我添加了管理菜单并应用了style { visibility:hidden}登录成功后,我想将其更改为{visibility:visible }

    这是我的主页代码

    <ul id="ul_myLst" runat="server">
        <li><a href="Testimonials.aspx">Testimonial</a>
        </li>
        <li><a href="#fakelink">Contact Us</a>
        </li>
        <li><a href="#fakelink">About Us</a>
        </li>
        <li><a href="Registration.aspx">Registartion</a>
        </li>
        <li><a href="OurFaculty.aspx">Our Faculty</a>
        </li>
        <li id="abc" runat="server" style="visibility:hidden">
            <a href="OurFaculty.aspx">Admin</a>
        </li>
    </ul>
    

    这是我的Default.aspx代码

    if (f.pass.Equals(txtpass.Value)) {
        HtmlGenericControl ul = (HtmlGenericControl)(this.Master.FindControl("abc"));
        //ul.Attributes["class"] = "admin-p";
        ul.Style.Remove("visibility");
        ul.Style["visibility"] = "visible";
        Response.Redirect("Index.aspx");
    }
    

    该代码运行良好,但当我再次返回index.aspx时,管理菜单会自动隐藏

  • 使用c动态更改html控件样式

    从您的代码中,我猜这一行:

    if(f.pass.Equals(txtpass.Value))
    

    是登录过程中保存的某种形式的值。如果是这种情况,并且您有一些隐藏的输入字段或其他内容,那么每次加载页面时(),调用一个设置Admin菜单的方法。根据您在网站上工作时记住的登录值更改"if"代码。(会话或视图状态或cookie)

    示例:

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
              setAdminMenu();
            }
        }
     private void setAdminMenu()
        {
          if(f.pass.Equals(txtpass.Value))
          {
            abc.Visibility = visible;
          }
        }
    
    萨巴,你做错了。

    我可以想出两种可能的简单方法来实现这一点:

    1.设置web控件Visible属性

    在主页面代码后面(MasterPage.master.cs)中,将此行添加到OnLoadPage_Load方法中:

    var liAdmin  = (HtmlGenericControl)Page.FindControl("abc");
    liAdmin.Visible  = User.IsInRole("Admin");
    

    MasterPage.master中,将runat="server"添加到<li>标记中。

    2.程序化添加<li>

    MasterPage.master中,将runat="server"添加到您的<ul>标记中。

    并且在主页面后面的代码添加到OnLoadPage_Load:

    if(User.IsInRole("Admin"))
    {
        var ulMenu  = (HtmlGenericControl)Page.FindControl("ul_myLst");
        var liAdmin = new HtmlGenericControl("li");
        var a = new HtmlAnchor();
        a.HRef = "OurFaculty.aspx";
        a.InnerText = "Admin";
        liAdmin.Controls.Add(a);
        ulMenu.Controls.Add(liAdmin);
    }
    

    您必须使用会话并检查主页面顶部是否存在会话值。当您返回母版页时,它会再次检查会话值,然后您可以编写css代码将管理菜单设置为可见。

    从技术上讲,循序渐进的程序:

    1. 在第二页上创建会话(default.aspx)
    2. 在主页面顶部检查会话值:设置if条件,如果会话值存在,则编写代码在其中显示管理菜单
    3. 创建注销页面以使会话无效

    您可以在此处阅读有关ASP会话的更多信息:http://www.w3schools.com/asp/asp_sessions.asp