0

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

1 回答 1

1

如果我理解正确,您想获取一个 URL,通过路由引擎两种方式运行它并获取路由参数,或者从路由参数创建一个 url?

您可以创建自己的 RoutingEngine 并将您的路由注册到其中,然后使用 StubRequest 调用它以生成 url 或将 url 解析为参数。

您也可以(如果您可以访问它)直接使用 RoutingModuleEx.Engine。

RoutingEngine 有两种方法,一种用于匹配,一种用于生成 url。

还有一个 RouteMatch 类,您可以将其用于测试目的或任何其他用途以测试 RouteMatch,但是,您不能使用它生成 url。

见本页底部:http: //www.castleproject.org/monorail/documentation/v20/advanced/routing.html

于 2010-03-03T22:42:42.293 回答