[100分],请大家看这个foreach错哪了。在线。
bool result=false;
HttpCookieCollection i = Request.Cookies;
foreach(HttpCookie hc in i)
{
if (hc.Name.Contains( "cookiename "))
{
result = true;
}
}
总是提错,说无法将string类型转成HttpCookie型,怎么hc就成了string型了呢?哪到HttpCookieCollection不是HttpCookie的集合???请高手说说。
------解决方案--------------------if (Request.Cookies[ "userInfo "] != null)
------解决方案--------------------不太清楚什么原因,不过如下是MSDN的一个示例,你按这个试下:
下面的代码示例依次通过客户端发送的所有 cookie,并将每个 cookie 的名称、过期日期、安全参数和值发送到 HTTP 输出。
int loop1, loop2;
HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;
MyCookieColl = Request.Cookies;
// Capture all cookie names into a string array.
String[] arr1 = MyCookieColl.AllKeys;
// Grab individual cookie objects by cookie name.
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
MyCookie = MyCookieColl[arr1[loop1]];
Response.Write( "Cookie: " + MyCookie.Name + " <br> ");
Response.Write( "Expires: " + MyCookie.Expires + " <br> ");
Response.Write ( "Secure: " + MyCookie.Secure + " <br> ");
//Grab all values for single cookie into an object array.
String[] arr2 = MyCookie.Values.AllKeys;
//Loop through cookie Value collection and print all values.
for (loop2 = 0; loop2 < arr2.Length; loop2++)
{
Response.Write( "Value " + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + " <br> ");
}
}
------解决方案--------------------你改用for循环来实现看看
在我这可以
public bool a()
{
bool t = false;
HttpCookieCollection i = Request.Cookies;
for (int j = 0; j < i.Count; j++)
{
if (i[j].Name.Contains( "a "))
t = true;
}
return t;
}
------解决方案--------------------1。
首先,我为上面的恢复道歉,特别是
=======
1。
经鉴定,代码没有错。
=======
2。
HttpCookieCollection 虽然表示的 HttpCookie 集合,但是它不像我们常见的集合,在提供枚举器方面不具“直观性”。 因为它继承于 NameObjectCollectionBase, 而 NameObjectCollectionBase 表示的是 为关联的 String 键和 Object 值的集合。
所以直接 foreach HttpCookieCollection 出来的是 key , 即为每一个 HttpCookie 的 name,类型为 System.String
3。
》》》
foreach(string cookieName in i)
{
HttpCookie hc = i[cookieName];
if (cookieName.Contains( "cookiename "))
{
result = true;
}
}
Sorry!
Anyway,Hope helpful!
------解决方案--------------------