刚刚创建了一个新的MVC 4项目,并从MVC 3项目复制了一些区域。我仔细检查了所有的web.configs和arearegistration.cs。我的配置都指向正确版本的剃刀和MVC以及我的routes.MapRoute签名包括正确的命名空间参数,我还检查并确保我的IIS池没有托管多个MVC应用程序。
我的Global.asax文件......
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "MVCProject.Web.Controllers" }
);
我的区域注册文件......
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "MVCProject.Web.Areas.Admin.Controllers" }
);
和......
context.MapRoute(
"Terminator_default",
"Terminator/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "MVCProject.Web.Areas.Terminator.Controllers" }
);
我已经检查了我知道要检查的所有内容 ,加载了正确的dll区域......
答案 0 :(得分:1)
好的我知道发生了什么事。我会回答我自己的问题,希望能帮到别人。
通常,当您在VS 2010中创建一个新的MVC项目时,您将获得模板为您提供的名称空间和一个或多个家庭控制器。我喜欢将我的MVC应用程序分解为通常的层(数据,模型和服务),每个层都在它自己的项目中。然后我重命名我的web项目,将.web附加到项目名称和名称空间“MyWebProject.Web”。
在我重命名Web项目之前,模板创建了应用程序,并为我删除了一个家庭控制器。由模板创建的主控制器位于MyWebProject.Controllers命名空间中,我的routes.MapRoutes()使用MyWebProject.Web.Controllers作为参数。
一旦我将模板创建的存根控制器移动到MyWebProject.Web.Controllers命名空间,它就解决了问题。
答案 1 :(得分:0)