2013-07-29 60 views
0

我有一個菜單的局部視圖,根據當前的行動我想顯示或隱藏鏈接,我在此嘗試以下獲取局部視圖當前的操作和運行的jQuery

@if (ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString() == "Users") 
{ 
    <script> 
     $("#addVS").show(); 
    </script> 
} 
    <li>@Html.ActionLink("Users", "Users", "Users") 
     <ul id="addVS" style="display:none;"> 
      <li>@Html.ActionLink("Add New User", "AddEditRecord", "Users",new { mode = "null"}, new { @id = "openDialog" })</li> 
     </ul> 
    </li> 

回答

1

你可能不需要使用任何JavaScript,但只是有條件地輸出的錨在服務器端:

<li> 
    @Html.ActionLink("Users", "Users", "Users") 

    @if (ViewContext.RouteData.GetRequiredString("action") == "Users") 
    { 
     <ul> 
      <li> 
       @Html.ActionLink(
        "Add New User", 
        "AddEditRecord", 
        "Users", 
        new { mode = "null" }, 
        new { id = "openDialog" } 
       ) 
      </li> 
     </ul> 
    } 
</li> 
1

有你使用jQuery,而不是讓控制器隱藏或顯示<li></li>理由嗎?

<li>@Html.ActionLink("Users", "Users", "Users") 
    @if (ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString() == "Users") 
    { 
      <ul id="addVS"> 
       <li>@Html.ActionLink("Add New User", "AddEditRecord", "Users",new { mode = "null"}, new { @id = "openDialog" })</li> 
      </ul> 
    } 
</li> 

這樣,控制器在構建局部視圖時呈現菜單。

如果你使用jQuery來隱藏或顯示鏈接,不要把腳本放在剃鬚刀條件語句內。將腳本標記放在父視圖的頁眉或頁腳中,並使用jQuery檢查條件是否爲true,並相應地隱藏/顯示

<script type="text/javascript"> 

if(condition is true){ 
    $("#addVS").show(); 
} 
</script>