ASP.NET MVC3使用区域

时间:2011-10-12 19:09:53

标签: asp.net-mvc-3

我在项目中设置两个区域时遇到了一些麻烦,我通过右键单击我的项目创建了两个区域 - >添加 - >区域使用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领域的很多问题,并试图按照答案顺利完成。这个问题一天中的大部分时间都让我感到困惑,任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:2)

如果您将文件从Controllers文件夹或项目根目录中的VIews文件夹移动到{AreaName}文件夹中包含的Controllers或View文件夹,那么所有移动的文件都需要从{ProjectName}.{*etCetera}更改其名称空间到:

{ProjectName}.Areas.{AreaName}.{*etCetera}

答案 1 :(得分:1)

Route Debugger showing the routing is incorrect

结果是错误的是订单或路由不正确,它首先处理{controller} / {action} / {id},这破坏了我的区域。移动

AreaRegistration.RegisterAllAreas();

到我的application_start顶部解决了我的问题。

http://haacked.com/archive/2011/04/13/routedebugger-2.aspx链接到我用来查找问题的工具,很遗憾,该工具的当前版本无法在默认的404页面上运行,因此我还必须创建一个自定义404页面才能使其工作