禁用"动作链接"在布局中,在剃刀视图中被引用

时间:2015-05-07 15:15:22

标签: asp.net-mvc asp.net-mvc-4 razor

我有一个使用_mylayout.cshtml的razor file.cshtml。在我的_mylayout.cshtml文件中有几个Action链接。

从我的razor file.cshtml如何在_mylayout.cshtml文件中禁用/隐藏动作链接?

_mylayout.cshtml
...
..
<li>@Html.ActionLink("Detail", "Edit", "DetailsFor", null, null)</li>
...
..

my file.cshtml which is using _mylayout.cshtml
...
@{
    ViewBag.Title = "Details Information";
    Layout = "~/Views/_mylayout.cshtml";
}
....

2 个答案:

答案 0 :(得分:2)

你不可能在技术上。关于你唯一能做的就是使用ViewBag来分支布局代码。

@if (ViewBag.HideDetailLink == null)
{
    <li>@Html.ActionLink("Detail", "Edit", "DetailsFor", null, null)</li>
}

然后,在您看来:

@{
    ViewBag.HideDetailLink = true;
}

在这里设置它并不重要,只是它有一些价值。当然,默认情况下,它不会有值(将为空),并且因为条件通过,所以会显示链接。

答案 1 :(得分:1)

@Chris的另一种解决方案是用jquery隐藏它。您可以通过为ActionLink提供ID(htmlAttribute参数)来完成此操作。

@Html.ActionLink("Detail", "Edit", "DetailsFor", null, new { id = "detailsLink" })

我创建了一个小提琴,告诉你它是如何工作的:http://jsfiddle.net/bxre7foe/

只需将“隐藏”方法添加到底部的_mylayout脚本块:

<script type="text/javascript">
  $("#detailsLink").hide();
</script>