由于我甚至无法描述问题,我不确切知道如何设置标题,这就是问题..
(这只是问题的简要说明)
说我有两个CheckBoxes设置为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
为什么!我错过了什么吗?
答案 0 :(得分:2)
如果您希望在调用CheckedChanged后立即看到该值,则需要将响应值分配给标签。
否则,标签控件不会反映这些更改,直到下次发回。
请参阅注释区域中的箭头 -
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();
// ^
// |
}
答案 1 :(得分:2)
阅读Response.Cookies [“用户首选项”]。值的标签长度。 不是请求的
答案 2 :(得分:1)
而不是
Request.Cookies["UserPreferences"].Value.Length.ToString();
使用
Response.Cookies["UserPreferences"].Value.Length.ToString();
为什么? 请求是Web客户端发送到Web服务器的内容。响应是Web服务器发送的 - 作为响应。两者都在HTTP规范中定义。 (它们的结构,它们包含的信息和元数据等)。
您可以在此处详细了解: Use of Request and Response in ASP.Net