自定义路线不匹配

时间:2014-10-15 07:07:03

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

在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

它不会呈现给Account Controller的登录操作。

请帮帮我。我在路线上犯了什么错误

想要在何时呈现给帐户控制器登录操作 网址是

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

1 个答案:

答案 0 :(得分:1)

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

  • 您定义的路线模式或默认路线 项目类型中包含的模式(如果有)。

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

  • 您为路线提供的所有默认值。

  • 您为路线提供的任何限制。

  • 是否已定义路由以处理与a匹配的请求 物理文件。

有关ASP.NET Routing的更多信息。

您必须更改路线的顺序。

    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 }
        );
    }