我正在使用 ASP.NET MVC3 和ASP.NET MVC Sitemap Provider。
我有一个名为 Application 的控制器。我还有一个叫做管理的区域。在管理区域中,我还有一个名为 Application 的控制器。
第一个应用程序控制器是针对普通网站用户的。另一个应用程序控制器供管理员使用。
我希望我的网址显示为:
/Application/1001/Notes
/Administration/Application/1001/Notes
我对上述 2 个 URL 的路由注册如下:
Routes.MapRoute("ApplicationNote",
"{controller}/{applicationId}/Notes",
new { controller = "Application", action = "Notes" },
new { applicationId = @"\d+" },
new[] { "MyProject.Web.Controllers" });
Routes.MapRoute("AdminApplicationNote",
"{area}/{controller}/{applicationId}/Notes",
new { area = "Administration", controller = "Application", action = "Notes" },
new { applicationId = @"\d+" },
new[] { "MyProject.Web.Areas.Administration.Controllers" });
当我运行我的应用程序并转到应用程序控制器中的任何操作方法时,我会在这里收到一个错误:
@Html.MvcSiteMap().SiteMapPath()
错误是:
Found multiple controllers:Application
这是我的站点地图配置的部分视图:
<mvcSiteMapNode title="About" area="" controller="Home" action="About" />
<mvcSiteMapNode title="Applications" area="" controller="Application" action="Index" key="ApplicationIndex">
<mvcSiteMapNode title="Create Application" area="" controller="Application" action="Create" />
<mvcSiteMapNode title="Applications List" controller="Application" area="" action="List" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Administration Dashboard" area="Administration" controller="Dashboard" action="Index">
<mvcSiteMapNode title="Users Dashboard" area="Administration" controller="User" action="List" />
</mvcSiteMapNode>
我将如何解决这个问题?如果我删除名为 AdminApplicationNote 的路由,其他应用程序 URL 将正确显示。但随后我可以让第二条区域路线按预期工作。