我需要在DropDownList中添加一个Cookie所选的值。
在DropDownList中有:
<asp:DropDownList ID="multiuser" runat="server"
AutoPostBack="true" OnSelectedIndexChanged="multiuser_SelectedIndexChanged">
<option selected="selected" value="">-------</option>
<option value="M40">M40</option>
<option value="Q10">Q10</option>
<option value="P60">P60</option>
</asp:DropDownList>multiuser_SelectedIndexChanged的代码是:
protected void multiuser_SelectedIndexChanged(object sender, EventArgs e)
{
cookieIdDTES = new HttpCookie("idDTES");
cookieIdDTES.Expires = DateTime.Now.AddHours(8);
cookieIdDTES.Value = multiuser.SelectedValue.ToString();
Response.Write("Value of DDL: " + multiuser.SelectedValue.ToString() + "<br />");
Response.Write("Value of Cookie : " + cookieIdDTES.Value + "<br />");
Response.Cookies.Add(cookieIdDTES);
Response.Write("Print request cookie : " + Request.Cookies["idDTES"].Value);
Response.End();
}如果在M40值中选择DropDownList,则输出如下:
Value of DDL: M40
Value of Cookie : M40
Print request cookie : P60如果在Q10值中选择DropDownList,则输出如下:
Value of DDL: Q10
Value of Cookie : Q10
Print request cookie : M40如果在P60值中选择DropDownList,则输出如下:
Value of DDL: P60
Value of Cookie : P60
Print request cookie : Q10Print request cookie的输出在任何情况下都是错误的.为什么?
请帮帮我。
提前谢谢你。
发布于 2015-11-06 10:23:48
正如我所看到的,您正在更新Response Cookie,并试图立即从 request Cookie中选择该值,实际上,该值将在下一个请求中更新。
您还可以看到您的结果,您总是从预期的请求 Cookie中获得最后更新的值。

cookie在HttpRequest.Cookies集合中立即可用,即使响应尚未发送到客户端。因此,当cookie第一次不能用于请求cookie集合时,来自响应的值和请求cookie的值将是相同的。但是如果cookie已经在请求中了呢。在这种情况下,请求cookie直到下一个请求才会更新。
检查手表值,而响应cookie包含值"C“,请求cookie包含"B",该值没有用响应cookie更新,而是包含旧值。
NB:我已经做了更多的调查并发现,添加响应集合也会在请求集合中添加新的cookie。这意味着,从第二次开始,我们将从请求集合中获得两个名称相同的cookie。例如,Request.Cookies"Selection1“可以在索引4和5中找到,其中索引4包含旧值,5包含最新值。但是,如果我们试图检索带有名称的值,它将返回第一个值,即前一个值。
发布于 2015-11-06 12:45:51
使用HttpResponse.Cookies集合添加cookie之后,cookie将立即复制到HttpRequest.Cookies集合。
集合Request.Cookies包含两个名称为idDTES的cookie。
你可以查一下这个
foreach (var item in Request.Cookies.AllKeys)
{
Response.Write("ALL request cookie : " + item + "<br />");
}在添加之前,可以从请求中删除旧cookie。
Request.Cookies.Remove("idDTES");
Response.Cookies.Add(cookieIdDTES);发布于 2015-11-06 09:23:48
protected void multiuser_SelectedIndexChanged(object sender, EventArgs e)
{
cookieIdDTES = new HttpCookie("idDTES");
cookieIdDTES.Expires = DateTime.Now;
cookieIdDTES.Value = multiuser.SelectedValue.ToString();
Response.Write("Value of DDL: " + multiuser.SelectedValue.ToString() + "<br />");
Response.Write("Value of Cookie : " + cookieIdDTES.Value + "<br />");
Response.Cookies.Add(cookieIdDTES);
Response.Write("Print request cookie : " + Request.Cookies["idDTES"].Value);
Response.End();
}https://stackoverflow.com/questions/33563181
复制相似问题