2009-12-02 11 views
1

J'ai un cookie enregistré sur l'utilisateur comme suit ...Comment utilisez-vous un Ampersand dans un HTTPCookie dans VB.NET?

Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria") 
searchCookie.Item("SearchText") = FullSearchCriteria.SearchText 
searchCookie.Item("SearchType") = FullSearchCriteria.SearchType 

Les magasins searchtext une valeur qu'ils ont entrée dans une page précédente. Nous avons observé s'il y a une perluète dans le cookie (par exemple Tyne & Wear), alors le cookie n'enregistre pas les valeurs suivantes (SearchType).

Ce qui se passe est le cookie est sortie comme ceci:

SearchText=Tyne & 

Il est évident que l'esperluette confond le cookie. Y a-t-il un moyen d'empêcher cela?

Répondre

5

Vous pouvez utiliser la méthode URLEncode.

Quelque chose comme:

imports HttpContext.Current 
... 
Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria") 
searchCookie.Item("SearchText") = Server.UrlEncode(FullSearchCriteria.SearchText) 
searchCookie.Item("SearchType") = Server.UrlEncode(FullSearchCriteria.SearchType) 

Cela est essentiel que only certain characters are allowed in cookies avec des personnages tels que ampersands breaking them.

1

D'oh! Je suis un tel dork ...

Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria") 
searchCookie.Item("SearchText") = HttpContext.Current.Server.UrlEncode(FullSearchCriteria.SearchText) 
searchCookie.Item("SearchType") = HttpContext.Current.Server.UrlEncode(FullSearchCriteria.SearchType) 
1

Les valeurs de cookie doivent être codées. Je ne suis pas expert en VB, mais il semble que cela se fait avec la méthode

System.Web.HttpUtility.UrlEncode