【发布时间】:2017-06-21 12:18:17
【问题描述】:
这应该是相当微不足道的,但事实并非如此。我正在尝试使用 Razor 助手输出一堆链接,但语法似乎天生就很难看。具有良好 Razor 知识的人可以帮助我澄清如何删除 <text> 标签并可能平衡标签,以便我可以摆脱 Raw() 输出?
@helper LinkBuilder(string linkText, string action, string controller, List<string> controllersGroup = null) {
bool userHasAccess = securityEngine.HasAccess(userRoles, controller.ToLower(), Permission.View);
<text></text> @* Razor demands some output first *@
if (userHasAccess == false) {
<text><li class="disabled" style="@(listItemWidth)"></text>
}
else {
<text><li style="@(listItemWidth)"></text>
}
if (userHasAccess) {
@Html.ActionLink(linkText, action, controller)
}
else {
<span title="@i18n.NoAccess">@linkText</span>
}
@Html.Raw("</li>") @* Without Html.Raw, Razor complains about unmatching tags *@
}
这个想法是使用这样的代码构建一个菜单:
<ul>
@LinkBuilder(i18n.Documents, "Documents", "Product")
@LinkBuilder(i18n.Reports, "Index", "Report")
@LinkBuilder(i18n.Committees, "Index", "Committee", new List<string> { "Company", "Person" })
</ul>
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor