我正在使用列表显示菜单并尝试将菜单项限制为特定用户。
这里的示例是我的菜单:
<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;
}
}
答案 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;
}