在我的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 }
);
}
}
}
答案 0 :(得分:5)
您可以使用下一个路线来处理您的问题:
routes.MapRoute(
name: "AdminSubForder",
url: "admin/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
请忘记将controller = "Home"
的默认值更改为当用户键入http://localhost:port/Admin/
时要重定向的控制器。
因此,当您转到http://localhost:port/Admin/Login/
时,您将在Admin文件夹中使用Login
控制器和Index
操作。
重要强>
还要将此路由放在默认路由之前,因为如果将此代码放在"默认"之后路由ASP.NET将使用http://localhost:port/Admin/Login/
控制器和Admin
操作读取您的Login
网址。
答案 1 :(得分:2)
您的新路线" SubFolder"不包括在路线中包含行动的可能性(在您的情况下," Admin")。
您的网址希望匹配
之类的路由"SubFolder/ChildController/{action}"
如果不包含" {action}"在您的路线中,它不符合您的路线。然后它会尝试默认路由,这显然会失败。
尝试添加" {action}"到您的路线,如下例所示
routes.MapRoute(
"SubFolder", // Route name
"SubFolder/ChildController/{action}",
new { controller = "ChildController", action = "Index" },
new[] { "Homa.Areas.Kiosk.Controllers.SubFolder" });