我在使用Areas
在MVC 3中正常工作时遇到了一些问题。我有以下文件夹结构并设置了Admin
区域:
我正在尝试从管理页面(索引)导航到Admin
区域中的其他视图页面,例如Admin/Floor/Create
等...但我得到The resource cannot be found
错误在我试过的每个网址组合中:
这些都不起作用。我设法使用第一个ActionLink
来链接到区域外的管理索引页面,但这里没用。
区域注册如下:
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
有人能提供一些帮助吗?
三江源
答案 0 :(得分:0)
问题出在你的路由上。您需要将默认控制器设置为AdminController
:
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
如果你没有指定这个,MVC并不完全知道你在寻找什么,实际上你希望你导航到/admin/admin
以显示初始视图。因此,如上所述更改路由,然后使用此操作链接转到FloorController.Create()
:
@Html.ActionLink("floors", "create", "floor", new { area = "admin" }, null)
要进行扩展,通过这种方式设置路由设置,您的网址将如下所示:
/admin // Executes AdminController.Index()
/admin/floor // Executes FloorController.Index()
下载了MaciejRogoziński的项目后,这给了我项目目前的相同问题。默认操作的链接链接到/admin/admin/
,正如我前面提到的,是您的项目正在寻找的内容,因为没有为区域路由指定默认控制器(这也适用于Maciej的项目)。通过指定默认控制器,您可以导航到/admin
,从而导致调用AdminController.Index()
。如果不指定该控制器,则只能从路由到/admin/admin
检索此视图,这也是Maciej应用程序正在执行的操作。