0
這應該是相當平凡的,但事實並非如此。我試圖用一個Razor助手來輸出一堆鏈接,但是這個語法似乎變得很醜陋。具有良好Razor知識的人能否幫助我澄清如何刪除<text>
標籤並有可能平衡標籤,以便擺脫Raw()輸出?幫手中正確的Razor語法
@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>
謝謝,這種方法奏效。但是爲什麼Razor在條件語句的句法(輔助函數的開始處)方面如此限制呢?即如果我添加* if(!userHasAccess)listItemClass =「disabled」; *一切正常,但如果我添加括號和一個else語句,它崩潰。 – Pedery