日期:2014-05-18  浏览次数:20388 次

[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!
------解决方案--------------------