2009-03-06 8 views
2

Ich arbeite an einem Projekt, das die tatsächliche URL abrufen und in der Route selbst verwenden muss. Alles, was ich sehe, lese und teste, ermöglicht es der Route, die Elemente nach der URL der Site zu erfassen. Dies ist, was ich versucht habe und jedes Mal einfach sagen, die Website ist leer (was wahrscheinlich wegen der Standardeinstellung von leer ist). Kannst du mir die Erlaubnis geben, dass die Route auch die Root-URL nutzt? Das Ziel ist eine Website, die die URL verarbeitet und mich zu verschiedenen Eingeweiden leitet, sobald sie in der Ansicht sind.Pass Website-URL in die Route in ASP.NET MVC

Hier ist der Code habe ich versucht, aber kein Glück außerhalb von localhost

  routes.MapRoute(
      "PageRouter", 
      "{site}/{*url}", 
      new { controller = "PageRouter", action = "RoutePage", site = "", url = "" } 
     ); 

Ihre Hilfe sehr geschätzt wird. Vielen Dank im Voraus

Antwort

0

Wie wäre es nur mit HttpContext.Request.RawUrl innerhalb der Aktion des Controllers. Ich kann hier etwas vermissen. Woher kommt die URL, von der Sie lesen möchten? Ist es die aktuelle Seite oder eine andere Seite?

+0

aktuelle Seite ist wo es ist .... wir müssen im Grunde die Quell-URL verwenden Ermitteln Sie die Vorlagen, sobald wir innerhalb der Route sind. Der Platzhalter {site} in der Route scheint zu weit hinter der RawUrl zu liegen. Ich werde versuchen, ihn zu verwenden und einen Kommentar dazu zu geben, wie es funktioniert – dodegaard

+0

Nathan .... würde es Ist es besser, dies stattdessen in Global.asax.cs zu tun? Können Sie zu diesem Zeitpunkt Informationen aus dem HttpContext.Request ernten? Dies müssen wir tun, wenn jede Anfrage ins System kommt, um benutzerdefinierte Vorlagen zuzulassen – dodegaard

0

Nathans Antwort ist Teil der Antwort. Die HttpContext.Request.RawUrl ermöglicht stattdessen Zugriff auf diese Information aber in der Datei Global.asax.cs. Dies geschieht im Application_BeginRequest-Ereignis. Aber der Trick (und bitte kommentieren, wenn jemand einen eleganteren Weg kennt, dies zu tun), aber wir injizieren die URL, die verwendet wird, in den verbleibenden Routenpfad, damit sie in der MapRoute-Methode aufgenommen werden kann. So würde die "http://subdomain.domain.net/url" -Site dann als "http://subdomain.domain.net/subdomain.domain.net/url" erscheinen, so dass sie im {site} -Teil des MapRoute-Befehls aufgenommen werden kann. Dies würde dem Benutzer nicht angezeigt, erlaubt uns dann aber Entscheidungen in der App zu treffen URL: Ist das vernünftig? Kommentare sind willkommen, wenn dies ein verrückter Weg zu sein scheint, um die Root URL zu absorbieren.

Verwandte Themen