2013-03-25 61 views

回答

2

你可以寫一個自定義路由:

public class MyRoute: Route 
{ 
    public MyRoute() 
     : base(
      "{part1}_{part2}/{action}", 
      new RouteValueDictionary(new { controller = "for_exp", action = "index" }), 
      new RouteValueDictionary(new { part1 = @"[a-z]+", part2 = @"[a-z]+" }), 
      new MvcRouteHandler() 
     ) 
    { 
    } 

    public override RouteData GetRouteData(HttpContextBase httpContext) 
    { 
     var rd = base.GetRouteData(httpContext); 
     if (rd == null) 
     { 
      return null; 
     } 

     var part1 = rd.GetRequiredString("part1"); 
     var part2 = rd.GetRequiredString("part2"); 
     rd.Values["controller"] = string.Concat(part1, "_", part2); 
     return rd; 
    } 
} 

將在您的Application_Start登記:

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

    routes.Add("MyRoute", new MyRoute()); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}", 
     defaults: new { controller = "Home", action = "Index" } 
    ); 
} 
+2

+1。有什麼你不知道的:) – 2013-03-25 08:06:26

+0

非常感謝Darin Dimitrov! – yusuf 2013-03-26 09:13:29

相關問題