因为我什至无法描述问题,所以我不知道如何放置标题,这就是问题所在..
(这只是简单的问题)
假设我有两个复选框设置为 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/