Обновление счетчика, когда пользователь нажимает кнопку с изображением веб-приложения asp.net - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть приложение веб-форм ASP.NET, где пользователь открывает изображение в элементе управления ImageButton.Я установил глобальную переменную int "counter" на ноль снаружи, прежде чем определять методы.Каждый раз, когда пользователь нажимает на элемент управления ImageButton, «счетчик» должен увеличиваться на единицу.Метод OnClick, связанный с ImageButton, запускается, но я думаю, что «счетчик» сбрасывается после каждого щелчка.Я знаю это, потому что выполняется только ветвь if в Image_Click.Как я могу убедиться, что обновленное значение "counter" запоминается для каждого клика?

Вот код .aspx для ImageButton:

<asp:ImageButton ID="pic" runat="server" OnClick="Image_Click" />

Вот код c # для Image_Click:

public int numClick++;

protected void Image_Click(object sender, ImageClickEventArgs e)
{
    numClick++;

    if (numClick % 2 == 1)
    {
        pos1x = e.X;
        pos1y = e.Y;
        labelarea.Text = " " + pos1x;

    }
    else if (numClick % 2 == 0)
    {
        pos2x = e.X;
        pos2y = e.Y;
        distx = Math.Abs(pos2x - pos1x);
        disty = Math.Abs(pos2y - pos1y);
        redistx = (int)(Math.Ceiling((float)(distx / (zoom * Math.Floor(dpiX / 4.0)))));
        redisty = (int)(Math.Ceiling((float)(disty / (zoom * Math.Floor(dpiY / 4.0)))));
        if (mode == 1)
        {
            if (distx >= disty)
            {
                lengthlabel.Text = "Length: " + redistx;
                total += redistx;
            }
            else
            {
                lengthlabel.Text = "Length: " + redisty;
                total += redisty;
            }
            labeltotal.Text = "Total: " + total;
        }
    }
}

1 Ответ

0 голосов
/ 28 сентября 2018

Вы должны хранить количество кликов в Sesson или Viewstate, потому что оно действительно сбрасывается после каждой загрузки страницы.В отличие от приложений, переменные веб-сайта существуют только в течение срока службы страницы.Ниже приведен простой пример того, как сохранить переменную в PostBack.

protected void Image_Click(object sender, EventArgs e)
{
    //create a variable for the clicks
    int ButtonClicks = 0;

    //check if the viewstate exists
    if (ViewState["ButtonClicks"] != null)
    {
        //cast the viewstate back to an int
        ButtonClicks = (int)ViewState["ButtonClicks"];
    }

    //increment the clicks
    ButtonClicks++;

    //update the viewstate
    ViewState["ButtonClicks"] = ButtonClicks;

    //show results
    Label1.Text = "Button is clicked " + ButtonClicks + " times.";
}
...