PostBack和会话值。为什么单击按钮后会话创建回发仍然显示为空

时间:2009-08-09 17:54:13

标签: session postback

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {
        lblPostBack.Text = " Text created first time";
    }
    else
    {
        if (Session["Counter"] == null)
        {
            lblPostBack.Text = "PostBack x however strange becasue if is postback it's mean somebody clicked button and session value has been created";

        }
        else
        {
            lblPostBack.Text = "PostBack x should be count here";
        }
    }
}
protected void cmd_Click(object sender, EventArgs e)
{
    int _counter;
    if (Session["Counter"] == null)
    {
        _counter = 1;

    }
    else
    {
        _counter = (int)Session["Counter"] + 1;
    }
    Session["Counter"] = _counter;
    lblPostBack.Text += "Counter: " + _counter.ToString();
}

3 个答案:

答案 0 :(得分:2)

假设这是ASP.NET:这是因为您的按钮上的Click事件在页面上的Load事件之后触发,因此尚未设置会话。

MSDN on the page lifecycle可能是很好的阅读 - 按钮点击是该文档表格中的“回发事件”。

如果我有错误的结束,请解释按钮点击后您收到的消息,以及您的期望。问题上的一些框架和语言标签可能也不会出错。

答案 1 :(得分:0)

好的确有效,只是FF搞砸了

答案 2 :(得分:0)

我添加了以下方法并且工作正常。

private int _counter;

protected void Page_Load(object sender, EventArgs e)
{
(...)

protected void Page_PreRender(Object sender,EventArgs e)     {         Session [“Counter”] = _counter;     }