在HtmlHelper扩展方法期间正在执行哪个操作

时间:2008-12-01 19:48:05

标签: asp.net-mvc

我正在开发一个菜单生成的HtmlHelper扩展方法。此方法需要知道正在执行哪个Action。因此,如果正在执行Home / Index,则扩展方法将显示指向“已协调”的其他操作的所有链接。从某种意义上说,在执行Home控制器的Index操作期间我需要知道的是Controller的名称和正在执行的Action的名称,以便可以执行其他逻辑。这可能吗?

3 个答案:

答案 0 :(得分:3)

试试这个

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

答案 1 :(得分:0)

我使用filter属性做类似的事情。你可以得到这样的动作名称:

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

我用它来禁用代表当前上下文的菜单项。

答案 2 :(得分:0)

我需要这样的东西,但并不完全。我希望能够获得一些强有力的方式来了解正在执行的操作。

在做AOP时要明确,如果用户拥有该操作的权限,我只允许访问给定的操作。

使用字符串确定要检查的规则的问题是,如果某个开发人员重命名某个操作,我将不会收到编译错误,告诉我我的规则已损坏。