我正在使用默认的RazorViewEngine和区域布局配置,但是当我导航到使用该区域内的视图的链接时。我收到一条错误消息,指出无法在以下位置找到和搜索视图:
~/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
答案 0 :(得分:3)
您确定正在调用RegisterRoutesTo()
中的ApplicationAreaRegistration.cs
吗?您所在地区的路线似乎尚未登记。
我建议将MapRoute移回RegisterArea
中ApplicationAreaRegistration.cs
的覆盖范围。
答案 1 :(得分:0)
您的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
时