MVC结构:
访问 http://localhost:2936/
出现:
找到了多个与名为“Home”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间来搜索匹配此请求的控制器,则会发生此情况。如果是这样,请通过调用采用“namespaces”参数的“MapRoute”方法的重载来注册此路由。
对“Home”的请求找到了下列匹配的控制器:
MvcApplication.Controllers.HomeController
MvcApplication.Areas.Admin.Controllers.HomeController
MvcApplication.Areas.Member.Controllers.HomeController
解决方法:
Global.asax
namespace WebMvc
{
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
// 请访问 http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // 参数默认值
new string[] { "WebMvc.Controllers" } //加入这个
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
ManagerAreaRegistration.cs
namespace WebMvc.Areas.Manager
{
public class ManagerAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Manager";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Manager_default",
"Manager/{controller}/{action}/{id}",
new {controller="Home", action = "Index", id = UrlParameter.Optional },
new string[] { "WebMvc.Areas.Manager.Controllers" } //加入这个
);
}
}
}
UserAreaRegistration.cs
文件也要加入,
自动生成的域注册文件(如:ManagerAreaRegistration.cs有些vs工具 namespace 会变成 WebMvc.Areas.Manager.Models,这个是错的,去掉 ".Models"就可以了,