Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c语言中的cookie中添加DropDownList的值_C#_Asp.net_Cookies - Fatal编程技术网

C# 在c语言中的cookie中添加DropDownList的值

C# 在c语言中的cookie中添加DropDownList的值,c#,asp.net,cookies,C#,Asp.net,Cookies,我需要在一个Cookie中添加DropDownList中的选定值 在下拉列表中,我有: <asp:DropDownList ID="multiuser" runat="server" AutoPostBack="true" OnSelectedIndexChanged="multiuser_SelectedIndexChanged"> <option selected="selected" value="">-------</option>

我需要在一个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>
如果在DropDownList中选择Q10值,则输出为:

Value of DDL: M40
Value of Cookie : M40
Print request cookie : P60
Value of DDL: Q10
Value of Cookie : Q10
Print request cookie : M40
Value of DDL: P60
Value of Cookie : P60
Print request cookie : Q10
如果在DropDownList中选择P60值,则输出为:

Value of DDL: M40
Value of Cookie : M40
Print request cookie : P60
Value of DDL: Q10
Value of Cookie : Q10
Print request cookie : M40
Value of DDL: P60
Value of Cookie : P60
Print request cookie : Q10
打印请求cookie的输出在所有情况下都是错误的。。。为什么?

请帮帮我


提前感谢。

因为我看到您正在更新响应Cookie,并尝试立即从请求Cookie中选择值,该值将在下一个请求时实际更新

 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();

}
您还可以看到您总是从请求Cookie中获取最后更新的值的结果,这是预期的

即使响应尚未发送到客户端,该cookie也会立即在HttpRequest.Cookies集合中可用。因此,当请求cookie集合首次无法使用cookie时,响应和请求cookie的值将是相同的。但是,如果请求中已经存在cookie,该怎么办呢。在这种情况下,请求cookie将在下一个请求之前不会更新

检查监视值,而响应cookie包含值C,请求cookie包含值B,该值不随响应cookie更新,而是包含旧值

注意:我做了更多的调查,发现添加响应集合也会在请求集合中添加新的cookie。这意味着,从第二次开始,我们将从请求集合中获得两个同名的cookie。
例如,Request.Cookies[Selection1]可以在索引4和5中找到,其中索引4包含旧值,而5包含最新值。但是,如果我们尝试检索名称为的值,它将返回表示上一个值的第一个值。

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

和收集请求。Cookies包含两个名为idDTES的Cookies

你可以查一下

foreach (var item in Request.Cookies.AllKeys)
{
    Response.Write("ALL request cookie : " + item + "<br />");
}

谢谢,但我遇到了以下错误System.NullReferenceException:对象引用未设置为行响应中对象的实例。WritePrint请求cookie:+request.Cookies[Name].Value;Response.WritePrint请求cookie:+cookieIdDTES[Name]尝试此方法问题在于cookieIdDTES的过期。过期已在当前时间的8小时后设置。因此,将使用相同的名称iddte创建多个cookie。检索时,它将根据fifo获取到期时间应为当前时间。@KaushikMaheta输出为空,有响应。WritePrint请求cookie:+cookieIdDTES[Name]@SuprabhatBiswal谢谢,我不理解您的建议,很抱歉。在您使用HttpResponse.Cookies集合添加cookie后,即使响应尚未发送到客户端,该cookie也会立即在HttpRequest.Cookies集合中可用@A级:说得好。谢谢你提醒我这件事。我必须承认,这不是我所期望的工作方式@谢谢你的评论。是,即使响应尚未发送到客户端,该cookie也会立即在HttpRequest.Cookies集合中可用。因此,当请求cookie集合首次无法使用cookie时,响应和请求cookie的值将是相同的。但是,如果请求中已经存在cookie,该怎么办呢。在这种情况下,请求cookie将在下一个请求之前不会更新。我想你会明白我的意思的@克里斯:你也可以查一下,我很感谢你的评论。