PostBack и значения сессии. Почему после нажатия кнопки и обратной передачи, созданной в сеансе, все еще отображается ноль - PullRequest
0 голосов
/ 09 августа 2009
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 ]

2 голосов
/ 10 августа 2009

Предполагается, что это ASP.NET: это потому, что событие Click на вашей кнопке срабатывает после события Load на вашей странице, поэтому сеанс не был установлен.

MSDN на жизненном цикле страницы может быть хорошим чтением - нажатие кнопки является "событием обратной передачи" в таблице в этом документе.

Если у меня неправильный конец флешки, пожалуйста, объясните, какие сообщения вы получаете после нажатия кнопки, и чего вы ожидали. Некоторые фреймворки и языковые теги по этому вопросу тоже могут не сработать.

0 голосов
/ 09 августа 2009

Я добавил следующий метод и отлично работает.

private int _counter;

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

защищенный void Page_PreRender (Отправитель объекта, EventArgs e) { Session ["Counter"] = _counter; }

0 голосов
/ 09 августа 2009

Хорошо, это работает, просто FF испортить

...