Asp.net mvc RouteConfig.cs不';子文件夹无法按预期工作

Asp.net mvc RouteConfig.cs不';子文件夹无法按预期工作,asp.net-mvc,Asp.net Mvc,我创建了一个管理子文件夹,其中包含所有与管理相关的控制器。与此类似: 这是我在'RouteConfig.cs'中的代码 我在Admin文件夹下有一个ManageUserController,而Admin在Controllers文件夹下 我有一个PublicContollers直接位于控制器下 以下是我的问题: 我所有的Html.ActionLink或Return View()和任何其他类似的修改都被搞糊涂了。例如,Html.ActionLink(“Public”、“Index”、“Public”

我创建了一个管理子文件夹,其中包含所有与管理相关的控制器。与此类似:

这是我在'RouteConfig.cs'中的代码

我在
Admin
文件夹下有一个
ManageUserController
,而
Admin
Controllers
文件夹下

我有一个
PublicContollers
直接位于
控制器下

以下是我的问题:

  • 我所有的
    Html.ActionLink
    Return View()
    和任何其他类似的修改都被搞糊涂了。例如,
    Html.ActionLink(“Public”、“Index”、“Public”)
    将把我带到
    www.something.com/admin/Public/Index
    而不仅仅是
    www.something.com/Public/Index

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

  • 预期产出:

  • 如果我有
    Html.ActionLink(“Public”、“Index”、“Public”)
    ,它应该把我带到
    www.something.com/Public/Index
    ,同样,如果我有
    Html.ActionLink(“Manage Users”、“Index”、“ManageUser”)
    ,它应该把我带到
    www.something.com/admin/ManageUser/Index

  • 如果我输入
    www.something.com/ManageUser/Index
    ,它会抛出页面未找到错误


  • 我缺少什么?

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

    如果您真的希望MVC应用程序的行为像它有子文件夹一样,我建议使用,它根据控制器所在的名称空间动态配置MVC路由(如果使用Visual Studio,它将与子文件夹具有相同的层次结构),并且将支持每个文件夹中的多个控制器

            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 },
            );