Razor View Engine不搜索区域视图位置

Kar*_*arl 5 routes viewengine razor asp.net-mvc-3

我正在使用默认的RazorViewEngine和Area布局配置,但是当我导航到使用该区域内的视图的链接时。我收到一条错误消息,指出在以下位置找不到和搜索视图:

 ~/Views/Applications/Details.cshtml
 ~/Views/Applications/Details.vbhtml 
 ~/Views/Shared/Details.cshtml
 ~/Views/Shared/Details.vbhtml
Run Code Online (Sandbox Code Playgroud)

我发现奇怪的是,看起来好像视图引擎没有尝试搜索区域位置。我需要进行哪些调整才能使视图引擎在其区域中搜索视图。

这是我用来定义区域的相关代码。

Global.asax.cs

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RouteRegistrar.RegisterRoutesTo(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)

ApplicationAreaRegistration.cs

private void RegisterRoutesTo(RouteCollection routes)
{
        routes.MapRoute("Application_default", AreaName + "/{action}/{applicationId}",
                        new
                        {
                            controller = "Applications",
                            action = "Index",                                
                            applicationDomainId = UrlParameter.Optional
                        }, new { applicationId = @"\d+" });
}
Run Code Online (Sandbox Code Playgroud)

Index.cshtml

@Html.RouteLink(item.Name, "Application_default", new { applicationId = item.Id, action = "Details" })
Run Code Online (Sandbox Code Playgroud)

物理目录布局

Areas \
      \Application
                  \Controllers
                              -ApplicationsController.cs
                   \Views
                         -Details.cshtml
       -ApplicationAreaRegistration.cs
Run Code Online (Sandbox Code Playgroud)

cou*_*ben 3

您确定正在调用RegisterRoutesTo()in吗?ApplicationAreaRegistration.cs似乎到您所在区域的路线尚未注册。

RegisterArea我建议将您的 MapRoute 移回到in的覆盖中ApplicationAreaRegistration.cs