我正在編寫一個基本上接收很多RouteValueDictionary
的幫助程序,並返回很多鏈接;我想跳過指向當前路由值的鏈接(例如:/Products/Details/3
不應該鏈接到/Products/Details/3
),忽略其他URL參數(如果有)。在ASP.NET MVC中跳過或禁用指向當前路徑的鏈接
我能想到的是檢查:
目的地行動和控制器的名稱爲空或等於爲當前的;
每個其他目的地路由值被定義並等於當前值,反之亦然。
有沒有更好的方法?
編輯:
一些背景:我有很多車型,許多控制器,許多動作。我不喜歡在任何地方一遍又一遍地寫同樣的東西的想法,所以我決定編寫一個通用的解決方案:權限感知圖標鏈接(我要求提示here)。
我現在有一個PermissionAwareIconAction
類,它有一個Icon
,一個HasPermission()
方法,一個委託來獲得URL和其他一些東西。裏面Global.asax.cs
我叫幾個方法來填充ActionTable
,它包含了所有這些東西,用這樣的代碼:
CrudAction.CreateCrudActions<Vendors>(Permissions.CreateVendors,
Permissions.EditVendors,
Permissions.DetailsVendors,
Permissions.DeleteVendors);
,當然,代碼中加入其他的具體行動。
我也裝點我的控制器的動作搭配:
[Action(typeof(Vendors), "Create")]
public ActionResult Create()
{
...
}
裏面的觀點,我做的:
<%= Html.IconActionLinks<Vendors>() %>
在沒有涉及到一個單一的對象,像Index
意見,
<%= Html.IconActionLinks<Vendors>(Model) %>
與物體相關的視圖,如Details
。
這樣,權限只在一個類中定義;此外,根據權限顯示或不顯示指向Edit
的鏈接的代碼是允許或不允許用戶看到Edit
操作的代碼。
我差不多完成了(我計劃發佈回覆我之前的問題,當我完成時恢復所做的工作)。
現在我還是要做這個小小的一塊,避免Details
圖標在Details
查看,Index
圖標在Index
查看等等。
原諒我的長篇。
我不知道爲什麼你會想這樣做?你會獲得什麼好處? – UpTheCreek 2009-09-29 08:11:23
我正在顯示動作圖標(編輯,詳細信息,刪除等);我在每個頁面上都顯示了很多圖標,例如,我發現在詳細信息頁面中顯示「詳細信息」圖標是不合適的。 – giorgian 2009-09-29 08:25:36