2016-10-11 23 views
2

リストを使用してメニューを表示しており、メニュー項目を特定のユーザーに限定しようとしています。表示項目リスト

<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

を'string link'変数の' Visible'プロパティを設定しようとしていますが、これは明らかに不可能です。実際のWebコントロールを使用する必要があります。 –

答えて

1

は、この<ul runat="server" id="links">ようなあなたのulrunat="server"を追加します。

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; 
} 
+0

ありがとうございますが、Arraylistにコントロールの定義がありません。 –

+0

@KarimAliこの 'using System.Web.UI.HtmlControls; 'を' using'ディレクティブに追加してください。 –

+0

@ KarimAliまた、これは 'System.Linqを使用しています。 ' –

関連する問題