我创建了一个Admin子文件夹,用于包含所有与管理员相关的控制器。与此类似: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 },
);
我在ManageUserController
文件夹下有一个Admin
,而Admin
位于Controllers
文件夹下。
我在PublicContollers
Controllers
以下是我的问题:
我的所有Html.ActionLink
或Return View()
以及任何其他类似的Redicrecting都感到困惑。例如,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
,则应该向我发送页面未找到错误。
我错过了什么?
答案 0 :(得分:0)
MVC不正式支持子文件夹。链接问题的答案显示了如何模仿一个子文件夹。如果您想创建嵌套的子文件夹,则需要为每个子文件夹创建一个新路由,并且每个级别只能支持一个控制器。
如果你真的希望你的MVC应用程序表现得像它有子文件夹,我建议使用MvcCodeRouting,它通过控制器所在的命名空间动态配置MVC路由(如果使用Visual Studio,将是相同的层次结构作为子文件夹),并将支持每个文件夹中的多个控制器。