値のリストを QueryString として渡すための推奨される方法は次のとおりです。
www.site.com/search?value=1&value=2&value=3&value=4
ASP.NET はこれを適切に処理します。
string value = QueryString.Get("value"); // returns "1,2,3,4"
しかし、これらの値を RouteData に渡す方法がわかりません。明らかなアプローチは、追加することです
int[] value = {1,2,3,4};
RouteData に挿入し、非常にスマートな MVC に整理してもらいます。残念ながら、配列を RouteData に渡す場合、MVC はダンプされます。基本的には、QueryString に value=int[] を追加する .ToString() を呼び出します。
RouteValueDictionary に値を追加しようとしました (ただし、辞書ではこれを処理できません:)
RouteValueDictionary dict = new RouteValueDictionary();
dict.Add("value","1");
dict.Add("value","2"); // Throws Exception (Keys must be unique)
次のような値を渡すことができます。
www.site.com/search?value=1,2,3,4
しかし、これは次のように URL にエンコードされます。
www.site.com/search?value=1%2C2%2C3%2C4
これが悪いことかどうかはわかりませんが、見た目が悪いことは確かです。
では、値のリストを ASP.NET MVC で RouteData として渡すにはどうすればよいでしょうか。int[] を処理するために MVC に追加できる方法はありますか? それとも、基礎となるディクショナリ ベースのデータ構造は、値のリストを ASP.NET MVC に簡単に渡すためのショーストッパーですか?