首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

[100分],请大家看这个foreach哪里错了。在线

2012-02-01 
[100分],请大家看这个foreach错哪了。在线。boolresultfalseHttpCookieCollectioniRequest.Cookiesforea

[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

热点排行