Monorail解析路由值的URL

时间:2010-03-01 09:53:30

标签: .net url-routing castle-monorail

是否可以在请求(独立应用程序或测试框架)的上下文之外启动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"]);

1 个答案:

答案 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