ASP.net MVC,项目名为MVCTest,建立一个Area,名为Admin,这个Area里有HomeController public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}RegisterRoutes方法中有默认route routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }对于:http://localhost:8326/admin/home/index
正常,使用Admin Area中的HomeController。
对于:http://localhost:8326/home/index
正常,错误提示有多个Controller。
(1)想优先使用主HomeController,为MapRoute方法加入namespaces参数
namespaces:new [] {"MVCTest.Controllers"},正常。
(2)想优先使用Admin area的HomeController,namespaces参数为:
namespaces:new [] {"MVCTest.Areas.Admin.Controllers"}
仍然使用主HomeController,为什么?
namespaces:new [] {"Areas.Admin.Controllers"}
错误提示有多个Controller,为什么?
namespaces:new [] {"Admin.Controllers"}
错误同上能不能通过namespaces指定优先使用Area的controller?
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}RegisterRoutes方法中有默认route routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }对于:http://localhost:8326/admin/home/index
正常,使用Admin Area中的HomeController。
对于:http://localhost:8326/home/index
正常,错误提示有多个Controller。
(1)想优先使用主HomeController,为MapRoute方法加入namespaces参数
namespaces:new [] {"MVCTest.Controllers"},正常。
(2)想优先使用Admin area的HomeController,namespaces参数为:
namespaces:new [] {"MVCTest.Areas.Admin.Controllers"}
仍然使用主HomeController,为什么?
namespaces:new [] {"Areas.Admin.Controllers"}
错误提示有多个Controller,为什么?
namespaces:new [] {"Admin.Controllers"}
错误同上能不能通过namespaces指定优先使用Area的controller?
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new [] {"MVCTest.Areas.Admin.Controllers"}
);
}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id =UrlParameter.Optional },
new [] {"MVCTest.Controllers"}
就是我说的情况(1)。另外我看文章说Area中不需要指定namespaces,默认的就是Area的namespaces,即会把“MVCTest.Areas.Admin”赋值给DataTokens["namespaces"].再求