我有一个奇怪的问题,即ActionLink不会显示。我在我看来有这个代码:
@if (User.IsInRole("Allow Create")) {
Html.ActionLink("Add a new item", "Create");
}
我认为可能我的角色和权限设置不正确,但是我经历了调试器,确实if语句成功了。它到达代码来创建动作链接,并且没有错误。
但是当页面加载时,没有链接。它不是隐藏的或任何东西,它根本不在源头。
任何人都知道我在这里做错了吗?
答案 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