【问题标题】:RouteConfig.cs doesn't work as expected for SubfolderRouteConfig.cs 不能按预期对子文件夹工作
【发布时间】:2016-02-20 17:00:43
【问题描述】:

我创建了一个管理子文件夹来包含我所有的管理相关控制器。类似这个:Subfolder in Controllers ASP.NET MVC

这是我在“RouteConfig.cs”中的代码

        routes.MapRoute(
            name: "Admin",
            url: "admin/{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        );

我在Admin 文件夹下有一个ManageUserControllerAdminControllers 文件夹下。

我在Controllers下面有一个PublicContollers

以下是我的问题:

  1. 我所有的 Html.ActionLinkReturn View() 以及任何其他类似的重定向都变得混乱。例如,Html.ActionLink("Public", "Index", "Public") 会将我带到 www.something.com/admin/public/index 而不仅仅是 www.something.com/public/index

  2. admin 关键字似乎在路由中没有任何用处。例如,www.something.com/admin/manageUser/indexwww.something.com/manageUser/index 都会带我到同一个地方。

预期输出:

  1. 如果我有Html.ActionLink("Public", "Index", "Public"),它应该带我到www.something.com/public/index,同样,如果我有Html.ActionLink("Manage Users", "Index", "ManageUser"),它应该带我到www.something.com/admin/ManageUser/index

  2. 如果我输入www.something.com/ManageUser/Index,它应该会抛出找不到页面的错误。

我错过了什么?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    MVC 不正式支持子文件夹。链接问题的答案显示了如何模仿 one 子文件夹。如果要创建嵌套子文件夹,则需要为每个子文件夹创建一个新路由,并且每个级别只能支持一个控制器。

    如果你真的希望你的 MVC 应用程序表现得像它有子文件夹,我建议使用MvcCodeRouting,它通过控制器所在的命名空间动态配置 MVC 路由(如果使用 Visual Studio,它将与子文件夹),并且将支持每个文件夹中的多个控制器。

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2015-06-26
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多