Монорельсовый анализ URL для значений маршрутизации - PullRequest
0 голосов
/ 01 марта 2010

Можно ли запустить механизм маршрутизации nvelocity вне контекста запроса (автономное приложение или среда тестирования) и получить URL-адрес из действия и значения маршрутизации из URL-адреса?

Вот тест, мне нужно выяснить метод маршрутизации:

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 Ответ

1 голос
/ 04 марта 2010

Если я правильно вас понимаю, вы хотите взять URL-адрес, запустить его через механизм маршрутизации в обоих направлениях и либо получить параметры маршрутизации, либо создать URL-адрес из параметров маршрутизации?

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

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

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

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

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

...