Frage

Ist es möglich, NVelocity Routing-Mechanismus außerhalb des Kontexts der Anfrage (Standalone-Anwendung oder eine Test-Framework), um Feuer und eine URL von Aktion zu erhalten und Routing-Werte von url?

Hier ist ein Test, ich brauche, um herauszufinden, die 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"]);
War es hilfreich?

Lösung

Wenn ich Dich richtig verstehe, wollen Sie eine URL nehmen, führen Sie es durch das Routing-Engine in beiden Richtungen und entweder bekommen die Routing-Parameter oder eine URL erstellen, die von Parametern Routing?

Sie können Ihre eigenen RoutingEngine erstellen und registrieren Sie Ihre Routen hinein, dann rufen Sie es mit einem StubRequest um Urls oder Parse-URLs in den Parameter zu erzeugen.

Sie können auch (wenn Sie Zugriff darauf haben) verwenden RoutingModuleEx.Engine direkt.

RoutingEngine hat zwei Methoden, eine für eine passende und zum Erzeugen von URLs.

Es gibt auch eine RouteMatch Klasse, die Sie für Testzwecke oder andere Nutzung, um eine RouteMatch zu testen, jedoch verwenden können, können Sie eine URL nicht mit ihm erzeugen.

Siehe unten auf dieser Seite: http://www.castleproject.org/monorail/documentation/v20/ advanced / routing.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top