我在项目中设置两个区域时遇到了一些麻烦,我通过右键单击我的项目创建了两个区域 - >添加 - >区域使用VS 2010 Professional,
它在* AreaRegistration.cs文件中生成的代码完全符合我的预期。
我的区域都有多个控制器。
我已经检查了我的global.asax.cs文件,它包含了我所期望的内容,以下是底部:
// Generated code AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes);
当我更改默认生成的路由信息时,我可以将其用于单个控制器:
context.MapRoute(
"CommunityCourses_default",
"CommunityCourses/{controller}/{action}/{id}",
new {controller="NameOfController", action = "Index", id = UrlParameter.Optional }
);
控制器=“NameOfController”是我尝试添加到生成的代码中,但它只适用于单个控制器。
编辑:我将文件的命名空间重命名为在区域内使用PROJECTNAME.AREANAME,这会导致问题吗?我认为它会以非常规方式简化我的导入。
我错过了什么?我注意到有关SO领域的很多问题,并试图按照答案顺利完成。这个问题一天中的大部分时间都让我感到困惑,任何帮助都将不胜感激!
答案 0 :(得分:2)
如果您将文件从Controllers文件夹或项目根目录中的VIews文件夹移动到{AreaName}文件夹中包含的Controllers或View文件夹,那么所有移动的文件都需要从{ProjectName}.{*etCetera}
更改其名称空间到:
{ProjectName}.Areas.{AreaName}.{*etCetera}
答案 1 :(得分:1)
结果是错误的是订单或路由不正确,它首先处理{controller} / {action} / {id},这破坏了我的区域。移动
AreaRegistration.RegisterAllAreas();
到我的application_start顶部解决了我的问题。
http://haacked.com/archive/2011/04/13/routedebugger-2.aspx链接到我用来查找问题的工具,很遗憾,该工具的当前版本无法在默认的404页面上运行,因此我还必须创建一个自定义404页面才能使其工作