0

我有一个带有菜单的部分视图,具体取决于我要显示或隐藏链接的当前操作,我的尝试如下

@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>
4

2 回答 2

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>
于 2013-07-29T16:21:14.217 回答
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 隐藏或显示链接,请不要将脚本放在 razor 条件语句中。将脚本标签放在父视图的页眉或页脚中,并使用 jQuery 检查条件是否为真并相应地隐藏/显示

<script type="text/javascript">

if(condition is true){
    $("#addVS").show();
}
</script>
于 2013-07-29T16:24:46.400 回答