2010-03-01 4 views
0

Est-il possible d'activer le mécanisme de routage nvelocity en dehors du contexte de la requête (application autonome ou framework de test) et obtenir une URL d'action et des valeurs de routage depuis l'URL?Monorail parse URL vers les valeurs de routage

Voici un test, je dois comprendre le 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"]); 

Répondre

1

Si je vous comprends bien, vous voulez prendre une URL, exécutez par le routage moteur dans les deux sens et soit obtenir le paramètres de routage, ou créer une URL à partir des paramètres de routage?

Vous pouvez créer votre propre RoutingEngine et y enregistrer vos itinéraires, puis l'appeler avec une StubRequest afin de générer des urls ou d'analyser des URL dans les paramètres.

Vous pouvez également (si vous y avez accès) utiliser directement RoutingModuleEx.Engine. RoutingEngine possède deux méthodes, une pour l'appariement et l'autre pour générer des URL.

Il existe également une classe RouteMatch que vous pouvez utiliser à des fins de test ou pour toute autre utilisation afin de tester un RouteMatch, mais vous ne pouvez pas générer d'URL avec celle-ci.

voir en bas de cette page: http://www.castleproject.org/monorail/documentation/v20/advanced/routing.html