L'approche recommandée pour les listes de valeurs passage comme QueryString estASP.NET MVC Passer Listes à RouteData QueryString
www.site.com/search?value=1&value=2&value=3&value=4
gère ASP.NET bien:
string value = QueryString.Get("value"); // returns "1,2,3,4"
Mais je ne peux pas trouver un moyen de transmettre ces valeurs dans RouteData. L'approche évidente serait d'ajouter
int[] value = {1,2,3,4};
dans le RouteData et ont de super choses intelligentes de tri MVC pour moi. Malheureusement MVC est dump quand il s'agit de passer des tableaux dans RouteData, il appelle essentiellement .ToString() en ajoutant valeur = int [] à ma chaîne de requête.
J'ai essayé d'ajouter les valeurs à RouteValueDictionary (mais étant un dictionnaire ne peut pas gérer ça :)
RouteValueDictionary dict = new RouteValueDictionary();
dict.Add("value","1");
dict.Add("value","2"); // Throws Exception (Keys must be unique)
Je pourrais essayer passer des valeurs comme ceci:
www.site.com/search?value=1,2,3,4
mais cela est encodée à l'URL comme
www.site.com/search?value=1%2C2%2C3%2C4
Je ne sais pas si c'est une mauvaise chose ou pas, mais ça a l'air ré. Donc, comment passez-vous les listes de valeurs en tant que RouteData dans ASP.NET MVC. Y at-il un moyen que je peux ajouter à MVC pour le faire gérer un int []? Ou la structure de données basée sur un dictionnaire sous-jacent est-elle un outil de blocage permettant de transmettre facilement des listes de valeurs à ASP.NET MVC?