Анализ URL-адреса монорельсовой дороги для значений маршрутизации

Можно ли запустить механизм маршрутизации 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"]);

person George Polevoy    schedule 01.03.2010    source источник


Ответы (1)


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

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

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

У RoutingEngine есть два метода: один для сопоставления, а другой для генерации URL-адресов.

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

См. нижнюю часть этой страницы: http://www.castleproject.org/monorail/documentation/v20/advanced/routing.html

person jishi    schedule 03.03.2010