2010-01-12 3 views
2

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

Например:

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?

10x заранее, Danail

+0

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

+0

Слишком большая уверенность в сеансе может вызвать проблемы с производительностью с сервером. +1 для ответа Марека, viewstate - самый правильный выбор, учитывая, что он является локальным для страницы и ее обратной передачи. – StingyJack

ответ

1

Есть несколько вариантов, кроме сессии. Взгляните на Nine Options for Managing Persistent User State in Your ASP.NET Application.

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

+0

Состояние сеанса - плохой выбор для таких данных, поскольку он потенциально должен быть записан в базу данных и считываться из базы данных для каждого запроса и для каждой страницы на сайте, а не только для страницы, которая в ней нуждается. – RickNZ

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! который дал мне некоторый свет на проблему;) Тем не менее я собираюсь пойти глубже в предложенной статье. – Danail

+0

Определенно хорошее чтение - очевидно, есть много способов сделать это. –

2

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

Смежные вопросы