【问题标题】:Subfolder in Controllers ASP.NET MVC [duplicate]控制器 ASP.NET MVC 中的子文件夹 [重复]
【发布时间】:2015-11-19 11:18:20
【问题描述】:

在我的 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 }
            );
        }
    }
}

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-routing


【解决方案1】:

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

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/ 类似 URL 与 Admin 控制器和 Login 操作。

【讨论】:

    【解决方案2】:

    您的新路由“SubFolder”不包括在路由中包含操作的可能性(在您的情况下为“Admin”)。

    你的网址想匹配 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" });
    

    【讨论】:

    • 我需要为 5 个不同的控制器添加 5 个 Maproutes?
    • 一个路由对所有五个控制器来说就足够了。路由只是模式匹配机制。我发布的示例代码中指定的控制器和操作的路由值是默认路由。如果您不为控制器或操作提供值,则默认路由将触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多