2008-12-01 74 views
4

我正在研究生成菜單的HtmlHelper擴展方法。此方法將需要知道正在執行哪個操作。因此,如果主頁/索引正在執行,則擴展方法將顯示所有與「協調」的其他操作的鏈接。從某種意義上說,在執行主控制器的索引操作期間,我需要知道的僅僅是控制器的名稱和正在執行的操作的名稱,以便可以執行其他邏輯。這可能嗎?在HtmlHelper擴展方法中執行哪個動作

回答

3

試試這個

var action = HtmlHelper.ViewContext.RouteData.Values["action"]; 
var controller = HtmlHelper.ViewContext.RouteData.Values["controller"]; 
+0

先生,你是男人之神。非常感謝你。 – 2008-12-01 20:20:32

0

我做一個篩選器屬性類似的東西。你可以得到這樣的動作名稱:

filterContext.RouteData.Values["action"].ToString(); 

我用它來禁用表示當前上下文的菜單項。

0

我需要這樣的東西,但不是很完美。我希望能夠獲得一些強類型的知道哪個動作正在執行的方法。

因此,澄清在做AOP,我只允許訪問給定的行動,如果用戶有該行爲的權利。

使用字符串來確定要檢查哪個規則的問題是,如果某些開發人員重命名某個操作,我將不會收到編譯錯誤,告訴我我的規則已損壞。