2014-03-13 150 views
0

是否有可能在路由配置中使用通配符?Asp.Net MVC 4通配符路由映射器挑战

我要让
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" 
      } 
     ); 

不工作?

回答

0

我刚才遇到铲球上面如下问题一个帖子:

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

这似乎所需的所有场景中工作 - 任何人都可以证实,这是做到这一点的正确方法是什么?