Pourquoi ne Demande.Les Cookies chaîne de retour au lieu de HttpCookie objet dans la boucle foreach?
Ce matin, j'ai accidentellement vu l'extrait suivant du code, j'ai été assez surpris car il fonctionne très bien.
Ne regarde pas sa logique, s'il vous plaît, je suis juste curieux de savoir pourquoi le HttpCookieCollection (Requête.Les Cookies dans ce cas) retourner une chaîne de caractères (nom du cookie) au lieu d'un HttpCookie objet dans la boucle foreach. Est-il une cohérence problème, parce que nous obtenons normalement HttpCookie objet de cette collection par index/nom?
Merci,
foreach (string cookieKey in System.Web.HttpContext.Current.Request.Cookies)
{
HttpCookie tmpCookie = System.Web.HttpContext.Current.Request.Cookies[cookieKey];
if (tmpCookie != null && tmpCookie["RecentlyVisited"] != null)
{
cookie.Add(tmpCookie);
}
}
- Merci à vous, @Chris: je ne demande pas comment itérer une collection en boucle 😉
- j'ai le même problème, je ne comprends pas pourquoi je dois utiliser des chaînes de caractères place de HttpCookie dans le foreach déclaration. aucun indice?
- si vous utilisez le Système.Net.CookieCollection vous pouvez effectuer une itération de cette façon. mais pas avec HttpCookieCollection, comportement étrange, je pense. public static HttpCookieCollection CookieCollectionToHttpCookieCollection(CookieCollection cookieCollection) { HttpCookieCollection httpCookieCollection = new HttpCookieCollection(); foreach (Cookie cookie dans cookieCollection) { httpCookieCollection.Ajouter(CookieToHttpCookie(cookie)); } return httpCookieCollection; }
Vous devez vous connecter pour publier un commentaire.
Il fait plus de sens pour itérer sur une collection à l'aide des touches. De cette façon, vous avez accès à la fois les clés et peut facilement accéder à la valeur en appelant
System.Web.HttpContext.Current.Request.Cookies[cookieKey];
Vous pouvez parcourir vos cookies par index:
Puisque vous pouvez obtenir des cookies par leur index numérique ainsi il est possible de numériser plusieurs cookies avec le même nom, sans avoir à copier à un CookieCollection ou quelque chose comme ça.
Cela devrait faire l'affaire: