ASP.NET MVC 4 - 2个带有分段的区域,1个没有分区的区域

Ber*_*ern 5 asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas asp.net-mvc-4

我刚刚创建了一个全新的ASP.NET MVC 4解决方案并添加了3个区域,并希望它们按照指示进行路由:

1. General         -> http://www.mysite.com/
2. Members         -> http://www.mysite.com/members/
3. Administration  -> http://www.mysite.com/administration/
Run Code Online (Sandbox Code Playgroud)

我可以配置路由,以便"常规"区域在它是第一个段时起作用,但是当我不希望"常规"在URL中显示为段时,似乎无法让我的路由在所有3个区域中工作.正如您所看到的,我的目标是建立一个干净的URL结构.

我计划在每个区域下添加一些控制器/视图,并希望维护这个区域组织.

我已经看到了类似的MVC 2问题,但我不确定区域注册的顺序是否会纠正我的特定问题.

dan*_*wig 3

打开 GeneralAreaRegistration.cs 文件。

找到这个:

context.MapRoute(
    "General_default",
    "General/{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

...并替换为:

context.MapRoute(null,
    "{controller}/{action}/{id}",
    new { controller = "General", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

回复评论:

假设您正在使用 URL http://www.mysite.com/members,并假设它位于您的 MembersAreaRegistration.cs 文件中:

context.MapRoute(
    "Members_default",
    "Members/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

...那么它应该可以工作。但是,如果您的 MapRoute 默认值中没有该controller = "Home"片段,则 URL 必须是http://www.mysite.com/members/home.