0

私はこのルートを持っています:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Funcionario",
                "{funcionario}",
                new { controller = "Funcionario", action = "Index", funcionario = UrlParameter.Optional },
                new string[] { "Route.Controllers" }
            );

            routes.MapRoute(
                "Servico",
                "{funcionario}/{servico}",
                new { controller = "Funcionario", action = "Servico", funcionario = UrlParameter.Optional, servico = UrlParameter.Optional },
                new string[] { "Route.Controllers" }
            );

            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = @"\d+" }, // Parameter defaults
                new string[] { "Route.Controllers" }
            );            
        }

しかし、ホーム/インデックスにアクセスできません。例えば:

働く

http://mydomain.com/pablo

http://mydomain.com/pablo/cozinha

http://mydomain.com/home/index/0

動作しない

http://mydomain.com/

http://mydomain.com/home/index

4

1 に答える 1

0

定義されたすべてのルートは汎用です。

  1. http://mydomain.com/pabloは最初のルートに一致します

  2. http://mydomain.com/pablo/cozinhaは 2 番目のルートに一致します

  3. http://mydomain.com/は最初のルートに一致します (そのため、ホームページは表示されません)

  4. http://mydomain.com/home/indexは 2 番目のルートに一致します。(そのため、ホームページは表示されません)

ルートは、特定の順序から一般的な順序まで定義する必要があります。たとえば、次のようにルートを変更できます。

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Servico",
            "Func/{funcionario}/{servico}",
            new { controller = "Funcionario", action = "Servico", funcionario = UrlParameter.Optional, servico = UrlParameter.Optional },
            new string[] { "Route.Controllers" }
        );

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = @"\d+" }, // Parameter defaults
            new string[] { "Route.Controllers" }
        );            
    }

したがって、あなたのリクエストは次のようになります。

  1. http://mydomain.com/Func/pablo
  2. http://mydomain.com/Func/pablo/cozinha
  3. http://mydomain.com/
  4. http://mydomain.com/home/index

したがって、リクエストが不要なルートと一致しないように、ルートは慎重に宣言する必要があります。

于 2013-07-10T11:58:45.037 に答える