对于ASP.NET MVC应用程序,我有2个名为Home
的控制器。其中一个控制器位于Areas
部分,一个不是。如果有人转到基本路径/
,我会尝试默认为Areas
部分中的控制器。我觉得这是可能的。我有以下设置,我认为应该让这种情况发生 -
当我转到/
时,我仍然被MVCArea01/Controllers/
而不是MVCArea01/Areas/Admin/Controllers/
带到控制器。
(如果图片中的代码太小而无法看到,这里是方法的代码,RegisterRoutes)
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new[] {"MVCAreas01.Areas.Admin.Controllers"} // I believe this code should cause "/" to go to the Areas section by default
);
}
什么是正确的解决方案?
答案 0 :(得分:1)
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
area = "Admin"
}
}
答案 1 :(得分:0)
@ABogus
我修改了AdminAreaRegistration.cs文件。请参考下图
我还修改了Route.config,如下所示。
我得到了像这样的输出
下载示例项目
答案 2 :(得分:0)
您应该为起始页面创建其他路线,这将直接处理到正确的控制器:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Home_Default",
"",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "MVCAreas01.Areas.Admin.Controllers" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MVCAreas01.Controllers" }
);
}