if语句中的ActionLink不显示

时间:2011-09-09 21:25:53

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

我有一个奇怪的问题,即ActionLink不会显示。我在我看来有这个代码:

@if (User.IsInRole("Allow Create")) {
    Html.ActionLink("Add a new item", "Create");
}

我认为可能我的角色和权限设置不正确,但是我经历了调试器,确实if语句成功了。它到达代码来创建动作链接,并且没有错误。

但是当页面加载时,没有链接。它不是隐藏的或任何东西,它根本不在源头。

任何人都知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:7)

您需要额外的@

@if (User.IsInRole("Allow Create")) {
    @Html.ActionLink("Add a new item", "Create");
}

至于解释:@if (User.IsInRole("Allow Create")) {将你置于一个代码块中,并且剃刀表明你正在调用Html.ActionLink(..),就像你在调用一个函数而不打扰返回的结果一样。由于您实际上想要将Html.ActionLink的结果输出为html,因此您需要混合需要@前缀的代码和文本。

为了说明,以下内容与上面的代码具有相同的结果:

@if (User.IsInRole("Allow Create")) {
    var url = Html.ActionLink("Add a new item", "Create");
    @url;
}

这是一个不错的Quick Reference