C#/.NET/ASPX:添加Cookies

C#/.NET/ASPX:添加Cookies,c#,asp.net,.net,cookies,C#,Asp.net,.net,Cookies,在我的页面加载函数中,我有: var output = new StringBuilder(); output.Append("<div class='search-recent'> <ul>"); var str = Response.Cookies["UserSettings"].Value; { try { string[] tokens

在我的页面加载函数中,我有:

 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();
            }
        }
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总是被覆盖,即使之前存在Cookie。是否有任何方法阻止它覆盖?多谢各位

参考研究:

编辑:似乎
.Value
没有返回任何内容,我可以使用什么来修复此问题

大编辑:我将
.Value
替换为
ToString()并且它现在不会覆盖。但是,当发送到前端时,cookie值为
System.Web.HttpCookie
。。。有什么建议吗


前端视图:(都是测试数据)

当您想获取客户机中cookie的值时,您需要访问
Request.Cookies
。要设置值,请使用
Response.Cookies

确定,因此经过多次尝试和错误后,我发现
.value
仅在设置或获取值时使用。

如果要检查值是否存在,请删除
.value
。 当您想要设置或获取值时,可以使用
.value

示例-

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

示例-

获取值并使用它

var输出=新的StringBuilder();
字符串userSettings=Request.Cookies[“userSettings”].Value;
输出。追加(“
    ”); { 尝试 { string[]tokens=userSettings.Split(“:”); foreach(令牌中的字符串searchHist) { 输出。追加(“
  • ”+searchHist+“
  • ”); } } 捕获(例外情况除外) { output.Append(“
  • ”+userSettings+“
  • ”); } 最后 { 输出。追加(“”); recentSearch.Text=output.ToString(); }

记住使用文字(控件)当您正在将数据从后端传输到前端时

可以这么说,但我该怎么做呢?我尝试过使用
响应.Cookies
,我尝试过使用
.Value
等。这两种方法都不起作用,只返回
System.Web.HttpCookie
null
。我现在需要做的就是重新调用我相信Cookie的价值
UserSettings
@KyleE4K看起来像你在下面。祝你的项目好运。谢谢:)学徒期哈哈,我是一名网站开发人员,只是喜欢软件方面的外观,但还是设法使用了数据库,现在在第三天就这样做了,哈哈,干杯
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);
        }
 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();
            }