Domanda

E 'possibile accendere meccanismo di routing NVelocity di fuori del contesto di richiesta (applicazione stand-alone, o un framework di test) e ottenere un URL da valori di azione e di routing da url?

Ecco un test, ho bisogno di capire il 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"]);
È stato utile?

Soluzione

Se ho capito bene, si vuole prendere un URL, eseguirlo tramite il Routing-motore di entrambi i sensi e sia ottenere i parametri di instradamento, o di creare un URL dal routing parametri?

È possibile creare il proprio RoutingEngine e registrare i vostri percorsi in esso, quindi richiamare con uno StubRequest al fine di generare gli URL o analizzare gli URL nei parametri.

Si potrebbe anche (se si ha accesso ad esso) utilizzare RoutingModuleEx.Engine direttamente.

RoutingEngine ha due metodi, uno per la corrispondenza e uno per la generazione di URL.

C'è anche una classe RouteMatch che è possibile utilizzare a scopo di test o qualsiasi altro utilizzo al fine di testare un RouteMatch, tuttavia, non è possibile generare un URL con esso.

Vedere in fondo a questa pagina: http://www.castleproject.org/monorail/documentation/v20/ avanzato / routing.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top