сохранение переменных между обновлениями страницы - PullRequest
1 голос
/ 08 ноября 2011

Мне нужно сделать основную веб-страницу (домашнее задание)

пользователю необходимо ввести номер в текстовое поле. после каждого номера ему нужно нажимать кнопку «ввести номер».

и после нескольких чисел ему нужно нажать другую кнопку, чтобы отобразить его номер и некоторые вычисления.

я не могу использовать массивы (ограничения для домашних заданий).

проблема в том, что после каждого нажатия пользователем «ввода номера» переменные сбрасываются.

что я могу сделать?

вот код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
       int totalSum=0;
       int mulOdd=1;
       int small=0;
       int big=0;
       float avg=0;
       int pairsum=0;
       int counter = 0;

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

        protected void Button1_Click(object sender, EventArgs e)
        {
            int t;
            counter++;

                t = Convert.ToInt16(TextBox1.Text);
                totalSum = totalSum + t;
                avg = totalSum / counter;
                int odd = t % 2;
                if (odd > 0)
                {
                    mulOdd = mulOdd * t;
                }
                else
                {
                    pairsum = pairsum + t;
                }

                if (t < small)
                {
                    small = t;
                }
                if (t > big)
                {
                    big = t;
                }

            TextBox1.Text = " ";`enter code here`
            Label1.Text = Convert.ToString(counter);
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Label1.Text = "total Sum" + Convert.ToString(totalSum);
        }
    }
}

спасибо.

Ответы [ 5 ]

2 голосов
/ 08 ноября 2011

Вам нужно сохранить переменные в состоянии. Есть несколько способов передачи переменных

[1] Cookies (редко используется для этого)

[2] Сессия (подходит для хранения страниц другого пользователя)

[3] ViewState (сохранение той же страницы для пользователя)

[4] Строки запроса (переход между страницами)

Прочитайте об этом, и это должно сработать. Простите, если я что-то пропустил.

0 голосов
/ 08 ноября 2011

Некоторые указатели, которые вы можете распространить на все свои переменные ...

  1. Удалите глобальное объявление всех этих переменных, вам не нужно иметь глобальную область видимости для них:

    int totalSum=0;
    int mulOdd=1;
    int small=0;
    int big=0;
    float avg=0;
    int pairsum=0;
    int counter = 0;
    
  2. В Button1_Click сохраните totalSum следующим образом:

    ViewState["Sum"] = Convert.ToInt16(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString()  )+  Convert.ToInt16(TextBox1.Text);
    
  3. Наконец, Button_Click2 do:

    Label1.Text = "total Sum" + Convert.ToString(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString());
    
0 голосов
/ 08 ноября 2011

В событии загрузки страницы проверьте свойство Page.IsPostback. Если true, тогда сбросьте ваши переменные на основе пользовательского ввода с серверных элементов управления разметкой HTML.

Прочитайте ссылки, предоставленные @Oded. Жизненный цикл страницы - очень важная тема.

0 голосов
/ 08 ноября 2011

Трудно помочь, не зная условий вашего назначения, но метод, который можно было бы использовать, - это иметь на странице скрытое поле (webusercontrol), в котором будет храниться строка.Каждый раз, когда нажимается кнопка, добавляйте строковое представление числа к значению этого элемента управления, следя за тем, чтобы значения разделялись символом (запятая, #, |, что угодно будет делать в действительности).Затем в любой момент процесса вы сможете получить значение этого элемента управления, разделить его на персонажа и вычислить все, что вам нужно для вычисления.

Поскольку это определяется как домашнее задание, я не будупубликовать код, но этот процесс должен быть довольно простым.

0 голосов
/ 08 ноября 2011

Необходимо прочитать о жизненном цикле страницы и о управлении состоянием , в частности состоянии просмотра .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...