Frage

Ich möchte mehrere Wildcard-Routen ignorieren.Mit asp.net mvc Preview 4 werden sie ausgeliefert mit:

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

Ich möchte auch etwas hinzufügen wie:

RouteTable.Routes.IgnoreRoute("Content/{*pathInfo}");

aber das scheint einige der Hilfsprogramme kaputt zu machen, die in meinem Programm URLs generieren.Gedanken?

War es hilfreich?

Lösung

Hier gibt es zwei mögliche Lösungen.

  1. Fügen Sie der Ignorierroute eine Einschränkung hinzu, um sicherzustellen, dass nur Anfragen, die ignoriert werden sollten, mit dieser Route übereinstimmen.Irgendwie umständlich, aber es sollte funktionieren.

    RouteTable.Routes.IgnoreRoute("{folder}/{*pathInfo}", new {folder="content"});
    
  2. Was befindet sich in Ihrem Inhaltsverzeichnis?Standardmäßig leitet Routing keine Dateien weiter, die auf der Festplatte vorhanden sind (überprüft tatsächlich den VirtualPathProvider).Wenn Sie also statischen Inhalt im Inhaltsverzeichnis ablegen, benötigen Sie die Ignorierungsroute möglicherweise nicht.

Andere Tipps

Das kann ziemlich schwierig sein.

Beim Versuch herauszufinden, wie Routendaten einer Route zugeordnet werden können, sucht das System derzeit von oben nach unten, bis es etwas findet, das alle erforderlichen Informationen bereitstellt, und stopft dann alles andere in Abfrageparameter.

Da die erforderlichen Informationen für die Route „Content/{*pathInfo}“ immer vollständig erfüllt sind (in dieser Route sind überhaupt keine Daten erforderlich) und sich die Route ganz oben in der Routenliste befindet, werden alle Ihre Versuche, sie auf unbenannte Routen abzubilden, erfüllt sein stimmen mit diesem Muster überein und alle Ihre URLs basieren darauf („Content?action=foo&controller=bar“).

Daran führt bei Aktionsrouten leider kein Weg vorbei.Wenn Sie benannte Routen verwenden (z. B. Html.RouteLink anstelle von Html.ActionLink auswählen), können Sie den Namen der abzugleichenden Route angeben.Es ist weniger bequem, aber präziser.

Meiner Meinung nach führen komplexe Routen dazu, dass das Action-Routing-System im Grunde zusammenbricht.In Anwendungen, in denen ich etwas anderes als die Standardrouten habe, greife ich fast immer auf die auf benannten Routen basierende URL-Generierung zurück, um sicherzustellen, dass ich immer die richtige Route erhalte.

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