2009-04-05 14 views
2

私のURLがどのように見える場合: www.mysite.com/1/home www.mysite.com/1/other-action www.mysite.com/1/another-action/?value=a自己リダイレクトし、asp.net mvcでパラメータを変更する方法?

同じパラメータとクエリーストリング値で同じアクションを呼び出すときに、どのように1パラメータを切り替えることができますか?私は現在、 www.mysite.com/1/another-action/?value=a を閲覧していた場合、私は www.mysite.com/2/に切り替える必要がリンクを取得したいと思います。例えば

別のアクション/?値= a 。 。 www.mysite.com/x/another-action/?value=a

Url.Actionは、一般的な考え方は、その後、現在のRouteValueDictionaryのクローンを作成する一つの値を変更し、ある

答えて

3

...助けていないようです新しいRouteValueDictionaryに基づいて新しいアクションリンクを作成します。ここに例があります。しかし、あなたはおそらくビューで直接URLヘルパーでこれをやりたい、というよりもしたい:

<% 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

完璧なソリューション! – qub1n

0

私はクレイグの答えに小さな最適化を提案します:

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

関連する問題