首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cookie中添加DropDownList在c#中的值

在cookie中添加DropDownList在c#中的值
EN

Stack Overflow用户
提问于 2015-11-06 09:13:47
回答 3查看 1.5K关注 0票数 0

我需要在DropDownList中添加一个Cookie所选的值。

在DropDownList中有:

代码语言:javascript
复制
<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的代码是:

代码语言:javascript
复制
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,则输出如下:

代码语言:javascript
复制
Value of DDL: M40
Value of Cookie : M40
Print request cookie : P60

如果在Q10值中选择DropDownList,则输出如下:

代码语言:javascript
复制
Value of DDL: Q10
Value of Cookie : Q10
Print request cookie : M40

如果在P60值中选择DropDownList,则输出如下:

代码语言:javascript
复制
Value of DDL: P60
Value of Cookie : P60
Print request cookie : Q10

Print request cookie的输出在任何情况下都是错误的.为什么?

请帮帮我。

提前谢谢你。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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包含最新值。但是,如果我们试图检索带有名称的值,它将返回第一个值,即前一个值。

票数 1
EN

Stack Overflow用户

发布于 2015-11-06 12:45:51

使用HttpResponse.Cookies集合添加cookie之后,cookie将立即复制到HttpRequest.Cookies集合。

集合Request.Cookies包含两个名称为idDTES的cookie。

你可以查一下这个

代码语言:javascript
复制
foreach (var item in Request.Cookies.AllKeys)
{
    Response.Write("ALL request cookie : " + item + "<br />");
}

在添加之前,可以从请求中删除旧cookie。

代码语言:javascript
复制
Request.Cookies.Remove("idDTES");
Response.Cookies.Add(cookieIdDTES);
票数 1
EN

Stack Overflow用户

发布于 2015-11-06 09:23:48

代码语言:javascript
复制
 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();

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

https://stackoverflow.com/questions/33563181

复制
相关文章

相似问题

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