Asp.net mvc 2 ASP.NET MVC、区域、路由和控制器工厂
我有一个关于ASP.NET MVC应用程序路由的有趣问题。我正在构建一个CMS,我有一个全面的处理程序,它获取URL并检查数据库中是否有匹配的内容。如果是这样,它会显示出来,否则我们会得到404 现在我已经有了所有的测试数据,我开始写一个快速管理系统。我想我会使用MVC2中的一些新区域功能,所以我创建了一个名为Admin的区域,其中有一个名为Home的控制器。 但是现在我有一个问题,当请求应用程序根路径时,将返回管理区域中的默认HomeController 问题是“根”应用程序没有其他HomeController—托管所有区域的应用程序,相反,根将被重定向到my catch all处理程序并从数据库填充。所以现在控制器工厂返回了最佳匹配的控制器,它认为是管理区域一,我真正需要的是它根本不匹配它-就像以前一样Asp.net mvc 2 ASP.NET MVC、区域、路由和控制器工厂,asp.net-mvc-2,asp.net-mvc-routing,Asp.net Mvc 2,Asp.net Mvc Routing,我有一个关于ASP.NET MVC应用程序路由的有趣问题。我正在构建一个CMS,我有一个全面的处理程序,它获取URL并检查数据库中是否有匹配的内容。如果是这样,它会显示出来,否则我们会得到404 现在我已经有了所有的测试数据,我开始写一个快速管理系统。我想我会使用MVC2中的一些新区域功能,所以我创建了一个名为Admin的区域,其中有一个名为Home的控制器。 但是现在我有一个问题,当请求应用程序根路径时,将返回管理区域中的默认HomeController 问题是“根”应用程序没有其他HomeC
除了将管理员HomeController重命名为其他名称外,还有其他解决方案吗?编辑。。。对不起,上次的回答离题了 在黑暗中拍摄。尝试更改默认映射路由 routes.MapRoute 违约 {controller}/{action}/{id}, 新建{controller=Home,area=,action=Index,id=} 或者可能面积=null
或者将控制器从主页更改为其他内容。编辑。。。对不起,上次的回答离题了 在黑暗中拍摄。尝试更改默认映射路由 routes.MapRoute 违约 {controller}/{action}/{id}, 新建{controller=Home,area=,action=Index,id=} 或者可能面积=null
或者将控制器从主页更改为其他内容。在管理区域中,打开AdminAreaRegistration.cs 在控制器所在的位置添加正确的命名空间:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }*,
new string[] { "Stridh.Areas.Admin.Controllers" }*
);
}
现在在global.asax中执行同样的操作:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Stridh.Controllers" } // Parameter defaults
);
在管理区域中,打开AdminAreaRegistration.cs 在控制器所在的位置添加正确的命名空间:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }*,
new string[] { "Stridh.Areas.Admin.Controllers" }*
);
}
现在在global.asax中执行同样的操作:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Stridh.Controllers" } // Parameter defaults
);
不安静正在发生的事情,当我请求时,它将尝试在加载控制器,因为这是唯一可用的HomeController实例。您可能还希望将命名空间选项添加到默认路由声明中。不安静正在发生的事情,当我请求时,它将尝试在加载控制器,因为这是唯一可用的HomeController实例。您可能还希望将名称空间选项添加到默认路由声明中。