我有一个部分视图,其中包含一个菜单,具体取决于我想要显示或隐藏链接的当前操作,我的尝试在此下面
@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>
答案 0 :(得分: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 :(得分: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>