2012-01-10 8 views
1

私はactionLinksからメニューを持っています。すべてのリンクにはいくつかのIDがあります。私がビューに転送するリストによれば、私はいくつかのリンクを目に見えるようにし、いくつかは見えないようにしたい。ここに私の全体像があります:MVCのビューでのJquery構文

@{ 
    ViewBag.Title = "My Page"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>My Page</h2> 
@foreach (var item in (List<MyTemplate>[])ViewData["myList"]) 
{ 
    if (item == "something1") 
    { 
     <script type="text/javascript"> 
      $(document).ready(function() { 
      $('#someId').hide(); 
     }); 
     </script> 
    } 
    if (item == "something4") 
    { 
     <script type="text/javascript"> 
      $(document).ready(function() { 
      $('#someOtherId').hide(); 
     }); 
     </script> 
    } 
} 

これはいいですか?

EDIT:リンクのソースコード

<div id="menucontainer"> 
    <ul id="menu"> 
     <li id="id1">@Html.ActionLink("My home page", "home", "home")</li> 
     <li id="users">@Html.ActionLink("Users", "Index", "Home")</li> 
     <li id="articles">@Html.ActionLink("Articles", "Index", "Home")</li> 
     <li id="id2">@Html.ActionLink("Photos", "Index", "Home")</li> 
     <li id="id3">@Html.ActionLink("about me", "Index", "Home")</li> 
     <li id="id4">@Html.ActionLink("sdsdf", "Index", "Home")</li> 
    </ul> 
</div> 

答えて

3

あなたはそのためにはJavaScriptを必要としません。サーバー側を使用してリンクを構築する場合は、要素が表示されているかどうかを示すそのリンクにcss classを設定することができます。

+0

しかしリンクは静的ではありません。例えば、今、私はlink1を目に見えないようにしたい、そして今、私はlink2を望んでいる。あなたはplsの例を提供できますか? –

+0

あなたのリンク先を提供してもらえますか? – dknaack

+0

0

私はそれを変更します

<script type="text/javascript"> 
    $(document).ready(function() { 

    @foreach (var item in (List<MyTemplate>[])ViewData["myList"]) 
    { 
     if (item == "something1") 
     { 
      $('#someId').hide(); 
     } 
     else if (item == "something4") 
     { 
      $('#someOtherId').hide(); 
     } 
    } 

    }); 
</script> 
+1

JSを動的に構築するのは良い方法ではありません。 JSを別のファイルに取り出して、CDNを縮小したり使用したりすることができなくなります。 – StuperUser

+0

ええ、でも、このコードはページに依存しないものではないようです。私はちょうど頼まれた種類の解決策を書く良い方法を提供しました。別の方法があり、他の回答でも説明されています。 – ivowiblo

+0

@ivowibloこれは私にエラーを与えます - $は期待されていません。 –