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

我想创建一个网站,如果管理员通过admin.aspx登录

我想在菜单列表中添加一个导航.

我的菜单列表由< ul> …< li>组成.即
HTML控件

那么如何在我的母版页面菜单中动态添加新的>

要不然

最初我添加管理菜单并应用样式{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时,管理菜单会自动隐藏

最佳答案 从你的代码,我猜这行:

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;
      }
    }
点赞