2013-07-10 25 views
0

我有一个相当大的mvc项目,我已经分解成几个区域。我使用添加区创建了区域,然后将我的一些控制器和视图从我的主控制器和视图文件夹中剪切并粘贴到区域中。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 

如果我成立了一个新的测试区域,并创建控制器,并认为这似乎工作正常。有没有人知道我可能做错了什么,我一直在研究这一点并尝试一整天,现在已经完全停滞。

回答

-1

尝试指定的完整路径是在返回视图声明:例如

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

,如果您使用的是行动,是不是有问题的默认视图,否则你必须指定完整的路径。

+0

未必是真实的。另外,OP没有提到用名字来调用观点。 –

+0

嗨 - 感谢您的回答。这出现了相同的错误。我猜测,这可能是与视图引擎,根据我的主要帖子中的错误消息。 –

2

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

但最重要的,看看你复制的控制器有适当命名空间即

MvcApplication.Areas.AreaName.Controllers 

代替

MvcApplication.Controllers 
+0

嗨 - 谢谢你。看来,我有这两个设置正确 - 公共覆盖无效RegisterArea(AreaRegistrationContext上下文) { context.MapRoute( “Rigoletto_default”, “弄臣/ {控制器}/{行动}/{ID}”, new {action =“Index”,id = UrlParameter.Optional} ); 而视图设置为Views => ControllerName =>查看名称 –

+0

嗨 - 另一个好主意,但这已经到位。 –