2010-03-01 4 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, запустить его через Routing-двигатель в обоих направлениях и как получить параметры маршрутизации или создать URL-адрес из параметров маршрутизации?

Вы можете создать свой собственный RoutingEngine и зарегистрировать свои маршруты в нем, а затем вызвать его с помощью StubRequest, чтобы генерировать URL-адреса или анализировать URL-адреса в параметрах.

Вы также можете (если у вас есть к нему доступ) напрямую используйте RoutingModuleEx.Engine.

RoutingEngine имеет два метода: один для соответствия и один для генерации URL-адресов.

Существует также класс RouteMatch, который вы можете использовать для целей тестирования или для любого другого использования, чтобы протестировать RouteMatch, однако вы не можете создать URL-адрес с ним.

Смотрите внизу этой страницы: http://www.castleproject.org/monorail/documentation/v20/advanced/routing.html