控制器中的子文件夹 ASP.NET MVC
Subfolder in Controllers 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 }
);
}
}
}
您的新路线 "SubFolder" 不包括在路线中包含操作的可能性(在您的情况下,"Admin")。
你的url想匹配routie like
"SubFolder/ChildController/{action}"
如果您的路线中不包含“{action}”,它将不会匹配您的路线。然后它尝试默认路由,这显然失败了。
尝试将“{action}”添加到您的路线,如下例所示
routes.MapRoute(
"SubFolder", // Route name
"SubFolder/ChildController/{action}",
new { controller = "ChildController", action = "Index" },
new[] { "Homa.Areas.Kiosk.Controllers.SubFolder" });
您可以使用下一条途径来处理您的问题:
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
操作。
重要
还要把这条路线放在默认路线之前,因为如果你把这段代码放在你的 "Default" 路线之后 ASP.NET 会读取你的 http://localhost:port/Admin/Login/
就像 URL 和 Admin
控制器和 Login
行动。
在我的 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 }
);
}
}
}
您的新路线 "SubFolder" 不包括在路线中包含操作的可能性(在您的情况下,"Admin")。
你的url想匹配routie like
"SubFolder/ChildController/{action}"
如果您的路线中不包含“{action}”,它将不会匹配您的路线。然后它尝试默认路由,这显然失败了。
尝试将“{action}”添加到您的路线,如下例所示
routes.MapRoute(
"SubFolder", // Route name
"SubFolder/ChildController/{action}",
new { controller = "ChildController", action = "Index" },
new[] { "Homa.Areas.Kiosk.Controllers.SubFolder" });
您可以使用下一条途径来处理您的问题:
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
操作。
重要
还要把这条路线放在默认路线之前,因为如果你把这段代码放在你的 "Default" 路线之后 ASP.NET 会读取你的 http://localhost:port/Admin/Login/
就像 URL 和 Admin
控制器和 Login
行动。