c# - AutoPostBack 的 Cookie 响应问题

标签 c# asp.net cookies

因为我什至无法描述问题,所以我不知道如何放置标题,这就是问题所在..

(这只是简单的问题)

假设我有两个复选框设置为 AutoPostBack=True

protected void cbPop_CheckedChanged(object sender, EventArgs e)
{
    Response.Cookies["UserPreferences"].Value = Request.Cookies["UserPreferences"].Value + "1";
    Label1.Text = Request.Cookies["UserPreferences"].Value.Length.ToString();
}

protected void cbDown_CheckedChanged(object sender, EventArgs e)
{
    Response.Cookies["UserPreferences"].Value = Request.Cookies["UserPreferences"].Value + "2";
    Label1.Text = Request.Cookies["UserPreferences"].Value.Length.ToString();
}

这是我的期望:

我希望标签的文本在我选中第一个复选框时显示“1”,而在我选中第二个复选框时显示“2”

这是我得到的:

我两次都得到“1”,当我手动检查 cookie 时,我看到它包含 12,因此在检查第二个复选框后它的长度应该变为 2,而不是标签显示它的长度保持为 1

为什么会这样!!我错过了什么吗??

最佳答案

如果您想在调用 CheckedChanged 后立即看到值,您需要将 Response 值分配给 Label

否则,Label 控件将不会反射(reflect)更改,直到下次回发。

见评论区的箭头——

protected void cbPop_CheckedChanged(object sender, EventArgs e)
{
    Response.Cookies["UserPreferences"].Value = 
       Request.Cookies["UserPreferences"].Value + "1";
    Label1.Text = Response.Cookies["UserPreferences"].Value.Length.ToString();
    //                ^
    //                |
}

protected void cbDown_CheckedChanged(object sender, EventArgs e)
{
    Response.Cookies["UserPreferences"].Value = 
        Request.Cookies["UserPreferences"].Value + "2";
    Label1.Text = Response.Cookies["UserPreferences"].Value.Length.ToString();
    //                ^
    //                |
}

关于c# - AutoPostBack 的 Cookie 响应问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255002/

相关文章:

c# - 我收到此错误 "manifest authoring error c1010001: Values of attribute "名称“不同 list 片段中不相等”。

c# - 在 WP7 中使用 Facebook.dll 发布到 Facebook 用户墙

c# - Entity Framework Core 中的 ObjectStateManager.ObjectStateManagerChanged

php - OpenID 登录机制 - 保持登录状态

c# - 复杂数据模型和json.net序列化问题

c# - 当前请求是否通过 Azure 部署通过 SSL 发出

asp.net - 为什么嵌套的 ASP.NET 4.0 web.config 有时会停止继承?

c# - 使用 C# 在 asp.net 中的 sql 查询中获取错误

javascript - 令人困惑的切换按钮状态。

php - Cookie 被设置两次