gpt4 book ai didi

c# - MVC 区域和路由问题

转载 作者:行者123 更新时间:2023-11-30 18:38:10 26 4
gpt4 key购买 nike

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

enter image description here

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

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

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

区域注册是这样的:

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

谁能提供一些帮助?

谢谢

最佳答案

问题出在您的路由上。您需要将默认 Controller 设置为 AdminController:

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

如果您不指定它,MVC 并不知道您在寻找什么,实际上希望您导航到 /admin/admin 以显示初始 View 。因此,按照我上面提到的那样更改路由,然后使用此操作链接到达 FloorController.Create():

@Html.ActionLink("floors", "create", "floor", new { area = "admin" }, null)

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

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

更新

Area Layout

下载 Maciej Rogoziński 的项目后,我遇到了与您的项目当前存在的相同问题。默认操作的链接是链接到 /admin/admin/,正如我前面提到的,这是您的项目正在寻找的,因为没有为区域路由指定默认 Controller (这也适用到 Maciej 的项目)。指定默认 Controller 允许您导航到 /admin,这会导致 AdminController.Index() 被调用。如果不指定该 Controller ,您只能从路由到 /admin/admin 检索此 View ,这也是 Maciej 的应用程序正在做的事情。

关于c# - MVC 区域和路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11830622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com