首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# / .NET / ASPX :添加Cookies

C# / .NET / ASPX :添加Cookies
EN

Stack Overflow用户
提问于 2016-02-10 12:29:52
回答 2查看 2.1K关注 0票数 4

在我的Page_Load函数中,我有以下内容:

代码语言:javascript
复制
 var output = new StringBuilder();
        output.Append("<div class='search-recent'> <ul>");
        var str = Response.Cookies["UserSettings"].Value;
        {
            try
            {
                string[] tokens = str.Split(':');
                foreach (String searchHist in tokens)
                {
                    output.Append("<li>" + searchHist + "</li>");
                }
            }
            catch (Exception ex)
            {
                output.Append("<li>" + str + "</li>");
            }
            finally
            {
                output.Append("</div>");
                recentSearch.Text = output.ToString();
            }
        }

在我的按钮功能中,我有这样的功能:

代码语言:javascript
复制
if (Response.Cookies["UserSettings"].Value != null)
        {
            var oldCookieVal = Response.Cookies["UserSettings"].Value;
            HttpCookie cookie = new HttpCookie("UserSettings");
            cookie.Value = oldCookieVal + ":" + sinput;
            cookie.Expires = DateTime.Now.AddHours(3);
            Response.SetCookie(cookie);
        }
        else
        {
            HttpCookie cookie = new HttpCookie("UserSettings");
            cookie.Value = sinput;
            cookie.Expires = DateTime.Now.AddHours(3);
            Response.SetCookie(cookie);
        }

出于某种原因,Cookie总是被覆盖,即使以前也是如此。有什么可以阻止它覆盖的吗?谢谢你。

参考研究:http://asp.net-tutorials.com/state/cookies/

编辑:看来.Value没有返回任何东西,我可以用什么来修复这个问题?

大编辑:我把.Value换成了ToString();,现在它没有覆盖。但是,当cookie被发送到前端时,它的值是System.Web.HttpCookie。有什么建议吗?

前端视图:https://gyazo.com/9c08160c6bca6cf5b335c0fc3861d0cb (全部是测试数据)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-10 14:03:50

当您想要获得cookie的值(就像它在客户机中一样)时,需要访问Request.Cookies。若要设置值,请使用Response.Cookies

票数 6
EN

Stack Overflow用户

发布于 2016-02-10 16:26:12

Ok,经过大量的尝试和错误之后,我发现 .Value 只在设置或获取值时才会使用。

当您想要检查值存在时,可以移除.Value。当您想设置或获取值时,可以使用.Value

示例-

设置cookie (不在检查期间设置或获取)

代码语言:javascript
复制
string oldCookieVal = Request.Cookies["UserSettings"].Value;
        string sinput = searchInput.Text;
        if (Response.Cookies["UserSettings"] != null)
        {
            HttpCookie cookie = new HttpCookie("UserSettings");
            cookie.Value = oldCookieVal + ":" + sinput;
            cookie.Expires = DateTime.Now.AddHours(3);
            Response.SetCookie(cookie);
        }
        else
        {
            HttpCookie cookie = new HttpCookie("UserSettings");
            cookie.Value = sinput;
            cookie.Expires = DateTime.Now.AddHours(3);
            Response.SetCookie(cookie);
        }

示例-

获取值并使用它

代码语言:javascript
复制
 var output = new StringBuilder();
        string userSettings = Request.Cookies["UserSettings"].Value;
        output.Append("<div class='search-recent'> <ul>");
        {
            try
            {
                string[] tokens = userSettings.Split(':');
                foreach (String searchHist in tokens)
                {
                    output.Append("<li>" + searchHist + "</li>");
                }
            }
            catch (Exception ex)
            {
                output.Append("<li>" + userSettings + "</li>");
            }
            finally
            {
                output.Append("</div>");
                recentSearch.Text = output.ToString();
            }

记住在处理从后端到前端的数据传输时使用文字的(控件)

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

https://stackoverflow.com/questions/35315360

复制
相关文章

相似问题

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