控制器ASP.NET MVC中的子文件夹

在我的Controllers文件夹中,我想要一个名为Admin的子文件夹。

在此处输入图像描述

当我去http:// localhost:port / Admin / Login /它说无法找到页面。

RouteConfig.cs

using System.Web.Mvc; using System.Web.Routing; namespace ICT4Events { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } } 

您可以使用下一个路线来处理您的问题:

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

当用户键入http://localhost:port/Admin/时,请勿忘记将controller = "Home"默认值更改为要重定向的控制器。

因此,当您转到http://localhost:port/Admin/Login/您将在Admin文件夹中使用Login controller和Index操作。

重要事项同样将此路由放在默认路由之前,因为如果将此代码放在“默认”路由之后,ASP.NET将使用Admin控制器和Login操作读取您的http://localhost:port/Admin/Login/ like URL。

您的新路线“SubFolder”不包括在路线中包含操作的可能性(在您的情况下,“管理员”)。

你的url想要匹配路由

 "SubFolder/ChildController/{action}" 

如果您的路线中不包含“{action}”,则与您的路线不符。 然后它尝试默认路由,显然失败了。

尝试在路线中添加“{action}”,如下例所示

 routes.MapRoute( "SubFolder", // Route name "SubFolder/ChildController/{action}", new { controller = "ChildController", action = "Index" }, new[] { "Homa.Areas.Kiosk.Controllers.SubFolder" });