自定义路由不匹配

本文关键字:不匹配 路由 自定义 | 更新日期: 2023-09-27 18:26:30

在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 = "Contact", id = UrlParameter.Optional }
            );
            routes.MapRoute(
                name: "Custom",
                url: "Secret/Routes/1",
                defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
            );
        }

我已创建自定义路线为:

 routes.MapRoute(
                    name: "Custom",
                    url: "Secret/Routes/1",
                    defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
                );

但是当我给出直接链接作为:

http://localhost:4618/Secret/Routes/1

它不会呈现为帐户控制器的登录操作。

请帮帮我。我在路上哪里出错了???

当URL是

http://localhost:4618/Secret/Routes/1

自定义路由不匹配

当路由处理URL请求时,它会尝试将请求的URL与路由相匹配。将URL请求与路由匹配取决于以下所有条件:

  • 已定义的管线图案或默认管线包含在项目类型中的模式(如果有的话)。

  • 将它们添加到Routes集合的顺序。

  • 为管线提供的任何默认值。

  • 为管线提供的任何约束。

  • 是否已定义路由以处理与物理文件。

有关ASP.NET路由的详细信息。

你必须改变路线的顺序。

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            name: "Custom",
            url: "Secret/Routes/1",
            defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional}
        );
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Contact", id = UrlParameter.Optional }
        );
    }