3

Areas在 MVC 3 中正常工作时遇到了一些问题。我设置了以下文件夹结构和Admin区域:

在此处输入图像描述

我正在尝试从管理页面(索引)导航到该Admin区域中的其他视图页面,例如Admin/Floor/Create等等......但是我The resource cannot be found尝试过的每个 url 组合都会出错,例如:

  • @Html.ActionLink("floors", "Index", "Floor", new { area = "Admin" }, null)
  • /楼层/索引/
  • /管理员/楼层/索引/

这些都不起作用。我设法使用第ActionLink一个从区域外部链接到管理索引页面,但在这里没有用。

区域注册如下所示:

context.MapRoute(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );

任何人都可以提供一些帮助吗?

谢谢

4

1 回答 1

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)

稍微扩展一下,通过这种方式设置路由,您的 URL 将如下所示:

/admin // Executes AdminController.Index()
/admin/floor // Executes FloorController.Index()

更新

区域布局

下载了 Maciej Rogoziński 的项目后,这给了我与您的项目当前相同的问题。默认操作的链接是 linking to /admin/admin/,正如我之前提到的,这是您的项目正在寻找的,因为没有为区域路由指定默认控制器(这也适用于 Maciej 的项目)。指定默认控制器允许您导航到/admin,这会导致AdminController.Index()被调用。如果不指定该控制器,您只能从 routing to 检索此视图/admin/admin,这也是 Maciej 的应用程序正在执行的操作。

于 2012-08-06T14:57:21.303 回答