Bonjour, j'ai besoin de passer ma demande.Form comme paramètre, mais je dois d'abord ajouter des couples de clé / valeur à celle-ci. Je reçois l'exception que la collection est réadonnée.
J'ai essayé: p> et je reçois la même erreur. p> et j'ai essayé: p> à tester si je peux le transmettre un par un à un autre dictionnaire, mais je reçois: P> System.InvalidcastException: spécifié
La distribution n'est pas valide. p>
BlockQuote> Un peu d'aide, n'importe qui? Merci p> p>
4 Réponses :
Vous n'avez pas besoin de lancer une chaîne code> code> à de cette façon, vous pouvez facilement aller: p> chaîne code>. namevaluecollection code> est construit autour des touches de chaîne et des valeurs de chaîne. Qu'en est-il d'une méthode d'extension rapide:
Thanx Matthew, je vais essayer demain. Je suis allé avec des champs cachés pour le moment.
Matthew - Nice One (et +1). Être un écossais, ne pouvait pas résister à mon poignot à ce sujet ci-dessous en utilisant un peu de linq :). Bonne année - PARF ... :-) (BTW, avoir un peu lu votre blog tout à l'heure actuelle, aimer les articles de Régula et JavaScript Linq) BTW, vous pouvez consulter cette implémentation de Linq JavaScript JSLINQ.CODEPLEX.COM
Andre,
Du: P>
public static IDictionary<string, string> ToDictionary(this NameValueCollection col)
{
IDictionary<string, string> myDictionary = new Dictionary<string, string>();
if (col != null)
{
myDictionary =
col.Cast<string>()
.Select(s => new { Key = s, Value = col[s] })
.ToDictionary(p => p.Key, p => p.Value);
}
return myDictionary;
}
Hee Hee, Aye - :). Je fais parfois trop avec Linq. En fait, j'ai un dilema comme on m'a proposé une nouvelle opportunité qui doit être provisionnée sur la pile de lampes et je me demande comment je vais faire face aux objets PHP5 sans Linq :) (Tho j'ai vu cela phplinq.codeplex.com )
NomValuecollection doit être NameValuecollection
public static Dictionary<string, string> ToDictionary(this NameValueCollection collection)
{
return collection
//.Keys
.Cast<string>()
.ToDictionary(key => key, key => collection[key]));
}
Si vous utilisez déjà MVC, vous pouvez le faire avec 0 lignes de code.
using System.Web.Mvc; var dictionary = new Dictionary<string, object>(); Request.Form.CopyTo(dictionary);