2013-09-25 2 views
-4

Всякий раз, когда я нажимаю кнопку Button1, текст в Literal1 не увеличивается. Не могли бы вы рассказать мне причину?Невозможно увеличить значение переменной страницы в Asp.net при нажатии кнопки

Ожидаемое: значение отображается в приращении текстового поля после каждой нажатия кнопки.

Текущий результат: значение всегда показывает 1.

public partial class d1 : System.Web.UI.Page 
{ 
int c; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     c = 1; 
     Literal1.Text = c.ToString(); 
    } 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    c=c+1; 
    Literal1.Text = c.ToString(); 
} 
} 
+0

Что вы хотите сказать? Кроме того, 'c' не является глобальной переменной. Это переменная частного экземпляра в классе 'd1'. – David

+0

Сделать 'c' статическим? – davisoa

+2

@ davisoa: Нет; это не сработает. – SLaks

ответ

1

Причина заключается в том, что c является экземпляр переменной на этом классе. И каждый пост-обратно на сервер создает новый экземпляр класса. Таким образом, c инициализируется до 0 на каждой обратной стороне. Если вы хотите, чтобы c сохранялся за пределами одного экземпляра этого класса, вам нужно его где-то сохранить. Сессия, приложение, база данных и т. Д. (В частности, где зависит, при каких обстоятельствах значение c должно сохраняться. Я предполагаю, что это всего лишь тестовый код, чтобы почувствовать функциональность, поэтому вы можете попробовать все вышеперечисленное и см., как они отличаются.)

За лот дополнительную информацию по этому вопросу, вы хотите прочитать на ASP.NET Page Life Cycle.

По существу, «global» не описывает c очень точно как переменную. Это область очень ограничена только этим классом, а точнее, только для одного экземпляра этого класса.

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