在asp.net中使<li>不可见

时间:2015-06-13 21:56:26

标签: c# asp.net

有没有办法让id liTest和liLogout的li不可见?

我试过了:

liTest.Visible = false 

但是我收到了这个错误:

  

错误3,名称&#39; litest&#39;在当前上下文中不存在

 <asp:LoginView runat="server" ViewStateMode="Disabled">
     <AnonymousTemplate>
         <ul class="nav navbar-nav navbar-right">
             <li><a runat="server" href="~/Account/Register">Register</a></li>
             <li><a runat="server" href="~/Account/Login">Log in</a></li>
             <li><a  ID="liTest" runat="server" >test</a></li>
             <li><a ID="liLogout" runat="server"  >Logout</a></li>
         </ul>
     </AnonymousTemplate>

3 个答案:

答案 0 :(得分:0)

参考:How to: Access Server Controls by ID

  

当控件不在命名容器内时,您可以获得一个   通过使用控件的ID引用它。控件在里面时   命名容器,您必须调用搜索命名的方法   用于控件ID的容器。控件也可能在一个内部   命名您无法直接访问的容器。

因此,您需要编写一个函数来在运行时中搜索设计时ID,如下所示:

private Control FindControlRecursive(Control rootControl, string controlID)
{
    if (rootControl.ID == controlID) return rootControl;

    foreach (Control controlToSearch in rootControl.Controls)
    {
        Control controlToReturn = 
            FindControlRecursive(controlToSearch, controlID);
        if (controlToReturn != null) return controlToReturn;
    }
    return null;
}

然后调用此函数以获取对所需控件的引用:

var ctrl = FindControlRecursive(this, "liTest");
if (ctrl !=null) {
   ctrl.Visible = false;
}

答案 1 :(得分:0)

替换它:

<li><a  ID="liTest" runat="server" >test</a></li>
<li><a ID="liLogout" runat="server"  >Logout</a></li>

有了这个:

<li ID="liTest" runat="server"><a>test</a></li>
<li ID="liLogout" runat="server"><a>Logout</a></li>

这使得LI控件可以被服务器软件访问。

如果您还希望服务器软件可以访问控件,那么您可以使用以下内容:

<li ID="liTest" runat="server"><a ID="liTestA" runat="server">test</a></li>
<li ID="liLogout" runat="server"><a ID="liLogoutA" runat="server">Logout</a></li>

答案 2 :(得分:-3)

你能用CSS吗?

#liTest, #liLogout {display:none;}

编辑: 您的ID不适用于 li 元素,而是 a