有没有办法让id liTest和liLogout的li不可见?
我试过了:
liTest.Visible = false
但是我收到了这个错误:
错误3,名称' litest'在当前上下文中不存在
<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>
答案 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 。