Frage

Unterstützt NancyFX ASP.NET MVC wie die „Catch All“-Route?Ich brauche eine, die grundsätzlich zu jeder URL passt.Dies ist sehr praktisch für die Erstellung von Single-Page-Anwendungen.

Ist das möglich?

War es hilfreich?

Lösung

ja, mit regex generasacodicetagpre.

Sie brauchen es jedoch nicht wirklich, um eine einzelne Seitenanwendung mit NancyFX aufzubauen.

Andere Tipps

Tested in Nancy version 0.23.2

Get[@"/(.*)"] hat für mich als Allround-Route nicht funktioniert.Die Routen "/", „/foo/bar“, und längere Strecken würden nicht fangen.Es scheint, dass man nicht darum herumkommt, a definieren zu müssen Get["/"] Route für die Root-URL.Nichts anderes scheint es zu fangen (versucht Get["{uri*}"]).So habe ich letztendlich meine Routen definiert (denken Sie daran, dass ich dies für eine Angular-Anwendung mache):

Get["/views/{uri*}"] = _ => { return "A partial view..."; };
Get["/"] =
Get["/{uri*}"] = _ =>
{
    var uri = (string)_.uri;// The captured route
    // If you're using OWIN, you can also get a reference to the captured route with:
    var environment = this.Context.GetOwinEnvironment();// GetOwinEnvironment is in the 'Nancy.Owin' namespace
    var requestPath = (string)environment["owin.RequestPath"];
    return View["views/defaultLayout.html"];
};

Es ist wichtig zu verstehen Musterbewertung.Die Routenmuster werden gewichtet. Wenn zwei Routen mit demselben URL-Segment übereinstimmen, gewinnt die höhere Punktzahl.Das Catch-All-Muster ist gewichtet 0 und obwohl die /views/{uri*} Das Routenmuster ist ebenfalls ein Sammelbegriff, es beginnt mit einem Literal, das gewichtet wird 10000, sodass es sich auf allen Routen durchsetzt, die mit beginnen /Ansichten.

Hier finden Sie weitere Informationen zu Zugriff auf die Umgebungsvariablen von Owin.Beachten Sie, dass die erfassten uri variabel und requestPath wird etwas anders sein.Der requestPath wird mit a beginnen / während die uri Variable wird nicht.Auch wenn das übereinstimmende Routenmuster vorliegt Get["/"], uri wird sein null Und requestPath wird sein "/".

Der Ansichten Route gibt eine teilweise HTML-Datei zurück, basierend auf dem URL-Pfad, und alle anderen Routen geben die Standard-Layoutseite zurück, die das SPA bootet.

Eine aktualisierte Antwort, für die @synhershkos Lösung nicht funktioniert.Versuchen Sie: generasacodicetagpre.

Hiermit werden alle Pfade mit Ausnahme der Indexseite erfasst.Ich bin mir nicht sicher, ob das im Kontext von Winkel funktioniert, aber das funktionierte für mich, als er versucht, einen einfachen Server mit nur einem Handler zusammenzuheben.

Antwort von @synhershko funktioniert nicht für mich.Es handhabt nicht, Benutzer / 2 oder eine andere Route, die mehr Segements enthält.

unter dem Code funktioniert auf meinem Computer;): generasacodicetagpre.

Meine Lösung ist nicht perfekt, da es nicht mit alles stimmt.Ich wiederholte so viele '/ (.**)' wie in meiner längsten eckigen Route.

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