【问题标题】:Asp.Net MVC 4 Wildcard Route Mapper ChallengeAsp.Net MVC 4 通配符路由映射器挑战
【发布时间】:2014-04-17 18:29:09
【问题描述】:

是否可以在路由配置中使用通配符?

我想做
http://localhost/documents-about-cats?animal_id=4&type_id=2
路由至:
http://localhost/home/search?animal_id=4&type_id=2

还有
http://localhost/browse-documents-about-cats?animal_id=4&page=1
路由至:
http://localhost/browse/index?animal_id=4&page=1

但是!
http://localhost/
必须路由到:
http://localhost/home/index

我希望 MVC 4 路由映射器可以处理通配符,这样我就可以执行以下操作:

        routes.MapRoute(
            "Search",            // Route name
            "documents-about-*", // URL with parameters
            new {
                controller = "Home", 
                action = "Search"
            }
        );

        routes.MapRoute(
            "Browse",                   // Route name
            "browse-documents-about-*", // URL with parameters
            new {
                controller = "Browse", 
                action = "Index"
            }
        );

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

但是这些路由映射似乎不起作用?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 iis-7 asp.net-mvc-routing


    【解决方案1】:

    我刚刚看到一个帖子解决了上面的问题,如下:

            routes.MapRoute(
                "Search",            // Route name
                "documents-about-{any}", // URL with parameters
                new
                {
                    controller = "Home",
                    action = "Search",
                    any = UrlParameter.Optional
                }
            );
    
            routes.MapRoute(
                "Browse",                   // Route name
                "browse-documents-about-{any}", // URL with parameters
                new
                {
                    controller = "Browse",
                    action = "Index"
                }
            );
    
            routes.MapRoute(
                "Blank",            // Route name
                "",                   // URL with parameters
                new
                {
                    controller = "Home",
                    action = "Index",
                    any = UrlParameter.Optional
                }
            );
    

    它似乎适用于所需的所有场景 - 任何人都可以确认这是执行此操作的正确方法吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 2012-09-03
      • 2011-04-10
      • 2010-11-08
      • 2023-03-19
      • 1970-01-01
      • 2012-08-06
      相关资源
      最近更新 更多