可见列表项

时间:2016-10-11 13:57:16

标签: c# asp.net arrays loops foreach

我正在使用列表显示菜单并尝试将菜单项限制为特定用户。

这里的示例是我的菜单:

<ul>
    <li id="link1" runat="server">Link 1</li>
    <li id="link2" runat="server">Link 1</li>
    <li id="link3" runat="server">Link 1</li>
</ul>

我可以轻松地写出类似的内容:

if(User == "") {

    link1.Visible = false;
    link2.Visible = false;
}
link3.Visible = true;

但我想使用循环来引用数组中的列表项ID。 我试图使这段代码工作:所以它应该阅读 link1.Visible = ... link2.Visible = ...但我不能以这种方式使用link.Visible。我怎样才能做到这一点?

非常感谢

ArrayList links = bw.return_arr_qry("Links", "BW_AppPerms", "Ext_App = 1");

// Links array return "link1", "link2", "link3" etc...

foreach(string link in links)
{
    if (BW_Access.accessApp(link, "Read") == false)
    {
        link.Visible = false;
    }
}   

1 个答案:

答案 0 :(得分:1)

runat="server"添加到您的ul,然后点击<ul runat="server" id="links">

var Links = links.Controls.OfType<HtmlGenericControl>().ToArray();
foreach (HtmlGenericControl li in Links)
{
    if (BW_Access.accessApp(li, "Read") == false)
    {
        li.Visible = false;
    }
}

如果您不想使用LINQ版本,请使用此选项:

foreach (Control li in links.Controls)
{
    if (li is HtmlGenericControl)
        li.Visible = false;
}