如何改进此路由表?

时间:2011-03-20 08:18:05

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我在Global.asax中有这个RegisterRoutes方法,这些可以缩写为给出相同的reslut吗?他们的订单怎么样?

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

        routes.MapRoute(
            "Villages", // Route name
            "villages", // URL with parameters
            new { controller = "Villages", action = "List", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "CreateVillage", // Route name
            "villages/create", // URL with parameters
            new { controller = "Villages", action = "Create", name = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "Village", // Route name
            "villages/{name}", // URL with parameters
            new { controller = "Villages", action = "Index", name = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "", // Route name
            "", // URL with parameters
            new { controller = "Villages", action = "List", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{name}", // URL with parameters
            new { controller = "Home", action = "Index", name = UrlParameter.Optional } // Parameter defaults
        );
    }

1 个答案:

答案 0 :(得分:1)

您可以将第一个与第四个路线合并,第二个与第三个合并。 defualt路线也可能与第二和第三组合。请注意,您可能需要使用一些路径约束才能使此表正常工作。您可以尝试路由调试器,但我建议您为路由编写单元测试。

修改

routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{name}", // URL with parameters
                new { controller = "Villages", action = "List", name = UrlParameter.Optional }, // Parameter defaults
                new { action = "create|list"}
            );

            routes.MapRoute(
                "Village", // Route name
                "villages/{name}", // URL with parameters
                new { controller = "Villages", action = "Index", name = UrlParameter.Optional } // Parameter defaults
            );