【问题标题】:mvc - breaking a project up into areasmvc - 将项目分解为多个区域
【发布时间】:2013-07-10 10:23:27
【问题描述】:

我有一个相当大的 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

如果我设置了一个新的测试区域,并创建了控制器,然后查看这似乎工作正常。有谁知道我可能做错了什么,我一直在研究和试验一天多,现在完全停滞不前。

【问题讨论】:

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


    【解决方案1】:

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

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

    MvcApplication.Areas.AreaName.Controllers
    

    而不是

    MvcApplication.Controllers
    

    【讨论】:

    • 嗨 - 谢谢。看来我已经正确设置了这两个 - public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Rigoletto_default", "Rigoletto/{controller}/{action}/{id}", new { action = "索引", id = UrlParameter.Optional } );并且视图设置为 Views => ControllerName => View Name
    【解决方案2】:

    尝试在返回视图语句中指定 are 的完整路径:例如

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

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

    【讨论】:

    • 不一定正确。此外,OP 没有提到使用名称调用视图。
    • 嗨 - 感谢您的回答。这会出现同样的错误。根据我主要帖子中的错误消息,我猜这可能与视图引擎有关。
    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多