[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!
------解决方案--------------------
ERPCoder(Most Valuable Player) ( ) 信誉:100 Blog 加为好友 2007-07-06 16:41:52 得分: 0
HttpCookie没有GetEnumerator的定义...
没有实现GetEnumerator接口?这种解释看起来比较合理
,就象迭代器一样,必须实现这个接口才能对类用foreach
[解决办法]
这种问题我是见过的,但有点忘记了
原理就是foreach的原理问题,它实现的接口是一个叫做什么来着“IEnum....”,记不太清楚了,你可以到baidu里面查找“foreach 接口”
其实是通过getEnumtor或去一个实例,最后调用“IEnum....”的next方法,循环便利,只是中间有个转化,关键就在这里,但视具体我有点忘记了,国会帮你找着
[解决办法]
for循环,通过了,可是明白用foreach集合应该可以的为什么?呢
======
因为 for 循环访问的是 HttpCookieCollection.Item[int i] 索引器,返回类型为 HttpCookie
(C# 中为 this[int index])
更多参考信息:
HttpCookieCollection 类 http://msdn2.microsoft.com/zh-cn/library/system.web.httpcookiecollection(VS.80).aspx