2011-09-09 60 views
2

我有一個ActionLink不會顯示的奇怪問題。我有這樣的代碼在我看來:if語句中的ActionLink不顯示

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

我想,也許我的角色和權限沒有設置正確,但我通過調試去,果然if語句成功。它到達創建操作鏈接的代碼,並且沒有錯誤。

但是當頁面加載時,沒有鏈接。它不是隱藏的或任何東西,它根本不在源頭。

任何人都知道我在這裏做錯了嗎?

回答

7

你需要一個額外的@

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

至於解釋:@if (User.IsInRole("Allow Create")) {讓你一個代碼塊裏面,剃刀數字,你只是打電話Html.ActionLink(..)好像你調用一個函數,而不是困擾有關返回的結果。由於您實際上希望以HTML格式輸出Html.ActionLink的結果,因此您需要混合使用前綴@的代碼和文本。

只是爲了說明這一點,下面將有相同的結果就像上面的代碼:

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

這裏是一個不錯的Quick Reference