2012-04-13 11 views
2

Ich weiß, wenn ich die aktuelle Aktion, die ich verwenden kann, erhalten möchte;Aktion Name aus Route Daten

ControllerContext.RouteData.GetRequiredString("action") 

Doch was passiert, wenn meine Route erlaubt http://mydomain/this has spaces

Wie würde ich "This Has Spaces" statt "ThisHasSpaces" bekommen?

Hier ist ein Ausschnitt aus meiner Routentabelle

 routes.MapRoute(
      "ThisHasSpaces", // Route name 
      "This Has Spaces", // URL with parameters 
      new { controller = "Home", action = "ThisHasSpaces", id = UrlParameter.Optional } // Parameter defaults 
     ); 
+0

Bekommen Sie wirklich 'ThisHasSpaces'? – jgauffin

+0

Ja, das ist der Aktionsname in der Steuerung und meine Routentabelle übersetzt die Leerzeichen in die nicht beabstandete Version – griegs

Antwort

2

Wenn Sie Ihre Route so aussieht, dass es nichts ist, dass Ihnen die ursprüngliche Zeichenfolge (außer Request.Uri) geben kann, da Sie die uri auf eine Route nicht wirklich ordnen Parameter.

Sie sind der einzige Weg codieren Sie einen anderen Wert hinzufügen könnte:

routes.MapRoute(
     "ThisHasSpaces", // Route name 
     "This Has Spaces", // URL with parameters 
     new { controller = "Home", action = "ThisHasSpaces", orgstring = "This Has Spaces", id = UrlParameter.Optional } // Parameter defaults 
    ); 

Und es holen:

ControllerContext.RouteData.Values["orgstring"] 
+0

Brilliant, danke – griegs