使用区域时,MVC无法定位视图

时间:2016-11-07 18:54:27

标签: asp.net-mvc-4

此问题多次出现在Stack Overflow上,但没有一个可接受的答案正常工作。我正在尝试在项目中实现区域。即使路由设置正确(我的控制器正在触发,我可以在VS调试器中逐步执行它们),当控制器尝试返回视图时,代码失败并显示下面的屏幕快照的臭名昭着的错误。

是的,我的观点位于正确的位置,并且命名为与我的控制器匹配(请参阅快照和代码示例),我的路由似乎设置正确(请参阅代码示例)。我可以让视图显示无错误的唯一方法是硬编码视图的完整路径,包括区域名称。即使在新的,直接的#34;开箱即用的情况下也会发生此错误。使用单个区域创建的MVC示例应用程序。在没有指定视图的完整路径的情况下,这些区域似乎无法正常工作。

任何帮助表示感谢。

我的项目如下所示:

enter image description here

我的控制器代码。 Index方法中设置的断点按预期触发,因此正在调用控制器。注释掉的行是返回视图的唯一方式。如此处所示,调用失败,并显示此问题末尾的错误:

    public ActionResult Index()
    {
        return View();
        // return View("~/Areas/Governance/Views/ChangeDashboard/Index.cshtml");
    }

路线设置:当我设置名为"治理"的区域时在VS中,我在一个新的" GovernanceAreaRegistration.cs"文件:

    public override string AreaName 
    {
        get 
        {
            return "Governance";
        }
    }
    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
            "Governance_default",
            "Governance/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }

错误:即使我已经遵循(我认为)所有规则,但在运行时出现以下错误。看起来我的新区域的视图子文件夹没有被搜索过:

enter image description here

1 个答案:

答案 0 :(得分:1)

您的网址需要包含您所在区域的名称。它应该看起来像static int getlast(const char *pkthdr) { // ... return result; }

相关问题