首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最近查看的Cookie

最近查看的Cookie
EN

Stack Overflow用户
提问于 2015-04-20 23:32:44
回答 1查看 407关注 0票数 2

我正在尝试创建一个cookie,用于存储用户查看的属性列表。

我已经创建了一个测试,它在一定程度上可以工作。目前,每当我访问一个页面时,它都会从URL中提取属性ID,然后创建一个包含该URL的新字符串,如果cookie已经存在,它会将该属性ID附加到它上面。

代码语言:javascript
复制
@{
    var rPropertyId = UrlData[0].AsInt(); 

    if(rPropertyId > 0){
        if (Request.Cookies["viewed_properties"] != null){
            var value = Request.Cookies["viewed_properties"].Value.ToString(); 
            var value1 = value + "." + rPropertyId;
            var newcookievalue = String.Join(".", value1.Split(new Char[] {'.'}).Distinct());
            Response.Cookies["viewed_properties"].Value = newcookievalue;
            Response.Cookies["viewed_properties"].Expires = DateTime.Now.AddYears(1); 
        } else {
            Response.Cookies["viewed_properties"].Value = rPropertyId.ToString();
            Response.Cookies["viewed_properties"].Expires = DateTime.Now.AddYears(1);            
        }
    }  
}

@if (Request.Cookies["viewed_properties"] != null){
    var mylist = Request.Cookies["viewed_properties"].Value.Split(new Char[] {'.'});
    foreach (var i in mylist)
    {
        <p>@i</p>
    }
}

这个过程没有考虑到的是,如果用户多次访问同一属性,我仍然希望在cookie中只有该ID的一个条目。我怎么检查它,把它转换成数组呢?

EN

回答 1

Stack Overflow用户

发布于 2015-04-20 23:40:45

Enumerable.Distinct将确保您没有重复的内容。

类似于:

代码语言:javascript
复制
 var newCookieValue = 
        String.Join(".",          
           currentCookieValue.Split(new Char[] {'.'}).Distinct());

要将latest添加到end -一个选项是先删除,然后添加:

代码语言:javascript
复制
 ....
    currentCookieValue.Split(new Char[] {'.'})
       .Where(s => s != newStringValueToAdd)
       .Distinct()
       .ToList()
       .Add(newStringValueToAdd)

附注: cookie值具有相对较小的长度限制(What is the maximum size of a web browser's cookie's key?),因此在向单个cookie中添加任意数量的项时要小心。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29752189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档