是否可以在请求(独立应用程序或测试框架)的上下文之外启动nvelocity路由机制,并从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"]);
答案 0 :(得分:1)
如果我理解正确,您想获取一个URL,通过路由引擎以两种方式运行它,并获取路由参数,或者从路由参数创建一个URL?
您可以创建自己的RoutingEngine并将路由注册到其中,然后使用StubRequest调用它以生成URL或将URL解析为参数。
你也可以(如果你有权访问它)直接使用RoutingModuleEx.Engine。
RoutingEngine有两种方法,一种用于匹配,另一种用于生成URL。
还有一个RouteMatch类,您可以将其用于测试目的或任何其他用途,以便测试RouteMatch,但是,您无法使用它生成URL。
请参阅本页底部: http://www.castleproject.org/monorail/documentation/v20/advanced/routing.html