我一生无法理解我在这里做错了什么。我搜索过高低,但是我尝试的所有内容似乎都无法解决。
我正在尝试创建一个存储用户名字和姓氏的cookie。如果用户返回并更改了名字或名字,则应修改userName cookie中的这些子项。这部分似乎不起作用?
protected void btnContinue_Click(object sender, EventArgs e)
{
if (IsValid)
{
HttpCookie cookie = new HttpCookie("userName");
if (cookie != null)
{
Response.Cookies.Remove("userName");
cookie.Values["firstName"] = txtFirstName.Text;
cookie.Values["lastName"] = txtLastName.Text;
}
else
{
cookie.Values["firstName"] = txtFirstName.Text;
cookie.Values["lastName"] = txtLastName.Text;
}
cookie.Expires = DateTime.Now.AddMinutes(5);
Response.Cookies.Add(cookie);
}
Response.Redirect("~/Order.aspx");
}
答案 0 :(得分:0)
在客户端浏览器上获取delete
cookie的方法是override
,将expires
的值设置为过去的日期。
使用此代码时:
Response.Cookies.Remove("userName");
您只删除服务器上的cookie,这意味着它不会发送到客户端。这意味着将保留客户端上的旧cookie。
要删除旧的cookie,请执行以下操作:
HttpCookie cookie = new HttpCookie("olduserName");
cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
这里'oldusername'
包含'username'
的先前值。
修改:
另一种方法是使用永远不变的名称来命名您的cookie,然后您可以在用户名更改时简单地用新值覆盖它。
Edit2 :
我实际上犯了与您相同的错误,您应该使用:
Response.Cookies.Set(cookie);
使用Add
时,可能有个以上的同名Cookie。这很可能是您的问题(对不起,我之前没有看到过)。
Edit2 :
现在刚看到这行:
Response.Redirect("~/Order.aspx");
您正在重定向!这样就不会在客户端上设置cookie。
相反,您应该在“〜/ Order.aspx”中设置cookie。