我使用默认的RazorViewEngine和Area布局配置,但当我导航到使用区域内视图的链接时。我收到一个错误,说明在以下位置无法找到和搜索视图:
~/Views/Applications/Details.cshtml
~/Views/Applications/Details.vbhtml
~/Views/Shared/Details.cshtml
~/Views/Shared/Details.vbhtml
我觉得奇怪的是,视图引擎似乎没有尝试搜索该区域的位置。我需要做什么调整才能让视图引擎搜索其所在区域的视图。
这是我用来定义我的区域的相关代码。
Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteRegistrar.RegisterRoutesTo(RouteTable.Routes);
}
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+" });
}
Index.cshtml
@Html.RouteLink(item.Name, "Application_default", new { applicationId = item.Id, action = "Details" })
物理目录布局
Areas
Application
Controllers
-ApplicationsController.cs
Views
-Details.cshtml
-ApplicationAreaRegistration.cs
您确定正在调用ApplicationAreaRegistration.cs
中的RegisterRoutesTo()
吗?似乎通往您所在地区的路线尚未注册。
我建议将MapRoute移回ApplicationAreaRegistration.cs
中的RegisterArea
覆盖。
您的MapRoute
似乎是个问题。尝试添加area
声明
routes.MapRoute("Application_default",
AreaName + "/{action}/{applicationId}",
new
{
area= "Application",
controller = "Applications",
action = "Index",
applicationDomainId = UrlParameter.Optional
},
new { applicationId = @"d+" });
此外,只需仔细检查Html.RouteLink
可用的各种过载-您可能需要添加RouteValues
集合的区域
`new {area="Application", applicationId = item.Id, action = "Details"}`
在区域外使用RouteLink
时