asp.net-mvc - 複数値のキーを持つRouteValueDictionaryを作成する

原文 asp.net-mvc asp.net-mvc-3 routes

次のようなURLにユーザーを送信するRedirectToRouteResultを返したいのですが。

/MyController/MyAction/id?newid=3&newid=5&newid=7


newidパラメータにはいくつかの値があります。

私の通話は次のようになります:return RedirectToAction(string.Empty, routeValues);

これが私がこれまでに試したものであり、それはうまくいきません:

// ...?newid%5B0%5D=3&newid%5B1%5D=5&newid%5B2%5D=7
var routeValues = new RouteValueDictionary {
    {"id", myid},
    {"newid[0]", 3},
    {"newid[1]", 5},
    {"newid[2]", 7},
};

// ...?newid=System.Int32%5B%5D
var routeValues = new { id = myid, newid = new int[] { 3, 5, 7 } };

// ...?newid=System.String%5B%5D
var routeValues = new { id = myid, newid = new string[] { "3", "5", "7" } };

// ...?newid=System.Int32%5B%5D
var routeValues = new RouteValueDictionary {
    {"id", myid},
    {"newid", new int[] { 3, 5, 7 } }
};


この作品を作る秘訣は何ですか?
答え
これは、フレームワークに欠けているものの1つです。あなたの最善の策は手動でそれを転がすことです:

public ActionResult Foo()
{
    var ids = new[] { 3, 5, 7 };
    var url = new UriBuilder(Url.Action("MyAction", "MyController", new { id = "123" }, Request.Url.Scheme));
    url.Query = string.Join("&", ids.Select(x => "newid=" + HttpUtility.UrlEncode(x.ToString())));
    return Redirect(url.ToString());
}


これをカスタム拡張メソッドに入れると、もちろん読みやすさが向上します。
関連記事

asp.net-mvc - 文字列のリストのEditorFor

ajax - MVCでajaxリクエストにビューを返す方法は?

asp.net - ASP.NET MVCで拡張子のない静的ファイルを提供。 404を取得

asp.net-mvc - NinjectでIDisposableを実装するエンティティフレームワークコンテキストを指定する

c# - @ Html.EditorForパーセンテージの表示と保存[複製]

asp.net-mvc - MVC System.Email with attachment

javascript - Highchartの時間データを週と月にグループ化

asp.net-mvc - DateTimeOffsetとkendo Datasource

asp.net - DropDownListForにデフォルト値を設定する方法

asp.net - BlogEngineと既存のMVCアプリケーションの統合