如何确定mvc站点地图中的当前控制器操作?

时间:2010-07-13 11:21:46

标签: asp.net asp.net-mvc navigation sitemap mvcsitemapprovider

我遇到了一个我无法想象的问题,我是第一个不得不处理它的人。然而,谷歌没有任何有用的东西,也没有,所以我在这里。

我正在使用ASP.NET MVC1和站点地图。使用html帮助器我创建了一个导航菜单,突出显示Site.Master页面中当前选定的选项。常见场景,使用以下方法轻松完成:


foreach ( SiteMapNode subnode in node.ChildNodes) {
    if (SiteMap.CurrentNode == subnode) { //got ourselves the current here }
}

这一切都很好,但是,我的问题是我有一个控制器有多个动作。请考虑以下情形:

帐户  *客户  *供应商  *维护

它们都在我的AccountController中,执行相同但具有不同AccountTypeId值的搜索。

当我读取SiteMap.CurrentNode值时,它只给出了我使用AccountController的信息,但不是我调用的操作。我已经尝试了很多东西,但我无法得到所要求的动作。

我希望我在那里提供了足够的信息,让您了解情景。如果您还有其他需要,请告诉我。

提前致谢:)!

PS:因为在工作约2个月后被扔进了asp.net所以请耐心等待。编程经验在这里,但C#/ .NET知识大多等同于Google或同事可以为我提供的。

编辑: - 回应下面的鲍勃答案 -

我遇到了SiteMap Provider项目,但是由于我使用的是MVC1并且它针对MVC2,所以我没有给予太多关注。另外,我不确定我们是否已经在使用它......毕竟,我拥有一个站点地图......而那个可以在办公室告诉我的人是冷静的在接下来的两个星期的某个地方的海滩:(

2 个答案:

答案 0 :(得分:0)

你看过RouteData.Values [“action”]了吗?如果这可能会有所帮助,那就很难解决。

答案 1 :(得分:0)

当您在Google

中搜索mvcsitemap时,可以尝试此ASP.NET MVC SiteMap provider第一个结果