2009-04-05 14 views
2

Wenn meine Urls wie folgt aussieht: www.mysite.com/1/home www.mysite.com/1/other-action www.mysite.com/1/another-action/?value=aWie Redirect und Ändern eines Parameters in asp.net mvc?

Wie kann ich den Parameter 1 wechseln, während dieselbe Aktion mit den gleichen Parametern und Querystring-Werten aufgerufen wird?

Zum Beispiel, wenn ich zur Zeit gerade www.mysite.com/1/another-action/?value=a Ich mag die notwendigen Verbindungen erhalten, um www.mysite.com/2/ zu wechseln another-action /? value = a . . www.mysite.com/x/another-action/?value=a

Url.Action scheint nicht zu helfen ...

Antwort

3

Die allgemeine Idee ist die aktuelle Routevaluedictionary klonen, einen Wert ändern, und dann Erstellen Sie einen neuen Aktionslink basierend auf dem neuen RouteValueDictionary. Hier ist ein Beispiel. Aber Sie würden wahrscheinlich diese in einer URL Helfer tun wollen, anstatt direkt in der Ansicht:

<% var foo = new RouteValueDictionary(); 
     foreach (var value in ViewContext.RouteData.Values) 
     { 
      foo.Add(value.Key, value.Value); 
     } 
     foo["id"] = 2; 
     var newUrl = Url.Action(foo["action"].ToString(), foo); %> 
+0

perfekte Lösung! – qub1n

0

ich kleine Optimierung Craig Antwort vorschlagen würde:

<% var foo = new RouteValueDictionary(ViewContext.RouteData.Values); foo["id"] = 2; var newUrl = Url.Action(foo["action"].ToString(), foo); %>

Verwandte Themen