demoshop

demo, trying to be the best_

ASP.NET MVC 的一個很重要的機制 URL Rewrite 但是當規則寫一堆以後真的很難偵錯,雖然可以利用Unit Test 來做測試,但是不一定每個人都會實作測試的,因此推薦一個快速測試Routes 的工具。

假設你的 Routes規則已經寫的和下面一樣多了,這時候偵錯真是麻煩阿。

public static void RegisterRoutes(RouteCollection routes)
 {
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     routes.MapRoute(
     "Root",
     "",
     new { controller = "Home", action = "Index", id = "" });
     routes.MapRoute(
     "Admin", "{Controller}/{action}/{id}",
     new { controller = "Admin", action = "Index", id = "" },
     new { controller = @"^Admin+" }
     );
     routes.MapRoute(
     "List", "List/{category}/{Kind}",
     new { controller = "Post", action = "List", Category = "", Kind = "" },
     new { controller = @"^Post+" }
     );
     routes.MapRoute(
     "Tag", "Tag/{category}/{Kind}",
     new { controller = "Post", action = "Tag", Category = "", Kind = "" },
     new { controller = @"^Post+" }
     );
     routes.MapRoute(
     "Rss", "Post/{category}",
     new { controller = "Rss", action = "Index", category = "" },
     new { controller = @"^Rss+" }
     );
     routes.MapRoute(
     "Home", "{action}/{id}",
     new { controller = "Home", action = "Index", id = "" },
     new { controller = @"^Home+" }
     );
     routes.MapRoute(
     "Default", "{Controller}/{action}/{id}",
     new { controller = "Home", action = "Index", id = "" }
     );
 }

先不要管上面的 Routes 可不可以用,反正就只是測試案例囉。


接者把「RouteDebugger」下載回來放置於專案Bin目錄下。

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
     
    //加上下方程式就可以做測試
    RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
 
    RegisterRoutes(RouteTable.Routes);
} 

這時候你只需要讓專案運行起來你就可以看到測試畫面囉


這對於測試實在是非常方便的工具,當測試完畢後只需要把新增的Code註解掉就可以了。

 

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

回應討論