我正在开发一个菜单生成的HtmlHelper扩展方法。此方法需要知道正在执行哪个Action。因此,如果正在执行Home / Index,则扩展方法将显示指向“已协调”的其他操作的所有链接。从某种意义上说,在执行Home控制器的Index操作期间我需要知道的是Controller的名称和正在执行的Action的名称,以便可以执行其他逻辑。这可能吗?
答案 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时要明确,如果用户拥有该操作的权限,我只允许访问给定的操作。
使用字符串确定要检查的规则的问题是,如果某个开发人员重命名某个操作,我将不会收到编译错误,告诉我我的规则已损坏。