2010-03-01 77 views
0

是否有可能在請求的上下文之外啓動nvelocity路由機制(獨立應用程序或測試框架)並從url中獲取url的動作和路由值?單軌解析URL到路由值

這裏是一個考驗,我需要弄清楚routingMethod:

var url = routingMethod.ResolveAction<MyController>(c=>c.MyAction("Foo",1)) 
Assert.AreEqual("/MyController/MyAction.rails?name=Foo&amount=1"); 

var url = "/MyController/MyAction.rails?name=Foo&amount=1"; 

IDictionary routingValues = routingMethod.DeriveRouteValuesFrom(url); 

Assert.AreEqual("MyController", routingValues["controller"]); 
Assert.AreEqual("MyAction", routingValues["action"]); 
Assert.AreEqual("Foo", routingValues["name"]); 
Assert.AreEqual(1, routingValues["amount"]); 

回答

1

如果我理解正確的話,你要採取的URL,通過路由引擎運行兩種方式,要麼拿到路由參數,或者從路由參數創建一個url?

您可以創建自己的RoutingEngine並將路由註冊到路由引擎中,然後使用StubRequest調用路由以生成URL或將URL解析爲參數。

您也可以(如果您有權訪問它)直接使用RoutingModuleEx.Engine。

RoutingEngine有兩個方法,一個用於匹配,另一個用於生成URL。

還有一個RouteMatch類,您可以將其用於測試目的或任何其他用途以測試RouteMatch,但是,您無法使用它生成url。

看到本頁底部: http://www.castleproject.org/monorail/documentation/v20/advanced/routing.html