Хранение переменных сеанса на странице ASP.NET?

2

Как я могу поместить переменные, которые имеют область охвата всей сессии на странице ASP.NET(я имею в виду в классе, который стоит за страницей aspx)? Единственный способ поместить переменную в объект Session?

Например:

public partial class Test_ : System.Web.UI.Page
{
    private int idx = 0;

    protected void Button1_Click(object sender, EventArgs e)
    {
        Button1.Text = (idx++).ToString();
    }
}

Я хочу, чтобы каждый клик на этой кнопке мой индекс поднимался вверх. Как это сделать без использования объекта Session?

10 раз заранее, Danail

  • 0
    Есть ли какая-то причина, по которой вы против объекта Session? С моей точки зрения, это переменная сеанса, поэтому она и принадлежит.
  • 0
    Слишком большая зависимость от сеанса может привести к проблемам с производительностью сервера. +1 для ответа Марека, viewstate - самый правильный выбор, учитывая, что это локально для страницы и ее постбэков.
Теги:

3 ответа

1
Лучший ответ

Существует несколько опций, кроме сеанса. Взгляните на Девять параметров управления постоянным пользовательским состоянием в вашем приложении ASP.NET.

Для такого рода данных вы, вероятно, захотите использовать хранилище сеансов.

  • 0
    Состояние сеанса является плохим выбором для данных, подобных этим, поскольку их потенциально необходимо записывать и считывать из базы данных для каждого запроса и для каждой страницы сайта, а не только для той страницы, которая нуждается в ней.
3

Вместо этого вы можете поместить его в ViewState

public partial class Test_ : System.Web.UI.Page {

    protected void Button1_Click(object sender, EventArgs e) {
        if(ViewState["idx"] == null) {
            ViewState["idx"] = 0;
        }
        int idx = Convert.ToInt32(ViewState["idx"]);

        Button1.Text = (idx++).ToString();

        ViewState["idx"] = idx;
    }
}
  • 0
    10x! это дало мне некоторое представление о проблеме;) Тем не менее, я углублюсь в статью, которую предложил Сет.
  • 0
    Определенно хорошее чтение - очевидно, есть много способов сделать это.
2

ViewState похоже на то, что вы ищете здесь, если этот счетчик не нужно поддерживать за пределами этой страницы. Имейте в виду, что обновление страницы будет reset счетчиком. Кроме того, если счетчик является конфиденциальной информацией, будьте осторожны, что он будет храниться (зашифрован) в визуализированном HTML, тогда как значения сеанса хранятся на стороне сервера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню