mvc - 将项目分解成区域

时间:2013-07-10 10:23:27

标签: asp.net-mvc asp.net-mvc-areas

我有一个相当大的mvc项目,我把它分成几个区域。我使用添加区域创建了区域,然后将我的主控制器和视图文件夹中的一些控制器和视图剪切并粘贴到区域中。

当从区域中的控制器运行某个操作时,它们似乎执行正常,直到它们尝试返回视图然后返回此错误:

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/Home/Index.cshtml
~/Views/Home/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml

如果我设置一个新的测试区域,并创建控制器,并查看这似乎工作正常。有没有人知道我可能做错了什么,我一直在研究这个并试验了一天以上,现在已经完全陷入停滞。

2 个答案:

答案 0 :(得分:2)

确保在context.MapRoute(..)文件中调用AreaRegistration.cs 还要确保您的Views文件夹处于适当的层次结构中。即Views => ControllerName

但最重要的是,查看您复制的控制器是否具有适当的命名空间,即

MvcApplication.Areas.AreaName.Controllers

而不是

MvcApplication.Controllers

答案 1 :(得分:-1)

尝试在return view语句中指定are的完整路径:例如

~/Areas/Admin/Views/Category/_CategoryDetails.cshtml

如果您使用该操作的默认视图不是问题,否则您必须指定完整路径。