在我的Page_Load函数中,我有以下内容:
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总是被覆盖,即使以前也是如此。有什么可以阻止它覆盖的吗?谢谢你。
参考研究:http://asp.net-tutorials.com/state/cookies/
编辑:看来.Value没有返回任何东西,我可以用什么来修复这个问题?
大编辑:我把.Value换成了ToString();,现在它没有覆盖。但是,当cookie被发送到前端时,它的值是System.Web.HttpCookie。有什么建议吗?
前端视图:https://gyazo.com/9c08160c6bca6cf5b335c0fc3861d0cb (全部是测试数据)
发布于 2016-02-10 14:03:50
当您想要获得cookie的值(就像它在客户机中一样)时,需要访问Request.Cookies。若要设置值,请使用Response.Cookies。
发布于 2016-02-10 16:26:12
Ok,经过大量的尝试和错误之后,我发现 .Value 只在设置或获取值时才会使用。
当您想要检查值存在时,可以移除.Value。当您想设置或获取值时,可以使用.Value
示例-
设置cookie (不在检查期间设置或获取)
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();
}记住在处理从后端到前端的数据传输时使用文字的(控件)
https://stackoverflow.com/questions/35315360
复制相似问题