MvcContrib - 如何将区域导入MenuBuilder ActionLink

时间:2011-01-12 19:29:06

标签: asp.net asp.net-mvc mvccontrib

我正在使用MenuBuilder,代码如下:

        public static MenuItem MainMenu(UrlHelper url)
    {
        Menu.DefaultIconDirectory = url.Content("~/Public/Images/");
        Menu.DefaultDisabledClass = "disabled";
        Menu.DefaultSelectedClass = "current";

        return Menu.Begin(
                    Menu.Items("",
                        Menu.Action<HomeController>(p => p.Index(), "Home")
                    ),
                    Menu.Items("",
                        Menu.Secure<HomeController>(p => p.About(), "About")
                    ),
                    Menu.Items("",
                        Menu.Action<RegulationController>(p => p.Index(null), "Compliance")
                    )/* This is in the Compliance area */
                    ).SetListClass("menu");
    }

但我也在使用MvcContib区域,在上面的代码中,最终菜单项位于名为“合规”的“区域”中。

(Mvc申请中还有另外两个区域,注册区域列表中的第一个区域称为“立法”)

以下是:

当呈现页面时(我使用标准的WebFormsViewEngine),Urls都使用“立法”区域进行渲染!!

E.g。 http://localhost:1337/Legislation/Homehttp://localhost:1337/Legislation/Home/About

最后http://localhost:1337/Legislation/Regulation

前两个链接不应该选择“立法”区域。最后一个菜单项应位于“合规性”区域。

如何防止在前两个链接上呈现错误的区域(立法)?

如何让Site.Master中的MenuBuilder标记接受“区域”属性,或者从Controller中为每个链接自动获取它?

1 个答案:

答案 0 :(得分:1)

似乎MvcContrib MenuBuilder在区域方面表现不佳。最后,我把区域拿出去了,问题就消失了。

但是,我认识到Mvc应用程序中可能存在其他问题,这可能确实与MvcContrib引用的Mvc dll的旧版本(beta?)有关。

因此,对于遇到这种情况的任何人来说,这可能确实是一个无问题。