2011-12-13 46 views
0

我創建了一個自定義的RouteGlobal.asax這樣註冊它:ASP.NET MVC - 如何註冊自定義路由?

routes.Add(
      null, 
      new SeoRoute(
       "foo/{id}/{title}", 
       new { controller = "Foo", action = "Details" } 
       )); 

由於我在我的應用程序中使用Areas,我必須設置Namespaces每個Route
隨着定期航線,我不喜歡這樣寫道:

routes.MapRoute(
    null, 
    "foo", 
    new { controller = "Foo", action = "Index" }, 
    new string[] { "Boo.Web.Controllers" } 
    ); 

但我怎麼能自定義路線設置namespaces

任何幫助將不勝感激!

回答

0

我用ILSpy也看MapRoute是如何工作的。
我沒有設置DataTokens的值。這裏的解決方案:

Route類:

public class SeoRoute : Route 
{ 
    public SeoRoute(string url, object defaultValues, string[] namespaces) 
     : base(url, new RouteValueDictionary(defaultValues), new MvcRouteHandler()) 
    { 
     if(namespaces != null && namespaces.Length > 0) 
     { 
      DataTokens = new RouteValueDictionary(); 
      DataTokens["Namespaces"] = namespaces; 
     } 
    } 
    ... 
} 

的Global.asax:

routes.Add(
      null, 
      new SeoRoute(
       "foo/{id}/{title}", 
       new { controller = "Foo", action = "Details" }, 
       new string[] { "Boo.Web.Controllers" } 
       ));