ASP.NET MVC 如何簡單測試 Routes
- 2009-12-20
- 20833
- 0
- ASP.NET MVC Routes 技巧
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








回應討論