Глобальная статическая переменная не меняет значения - PullRequest
0 голосов
/ 22 января 2019

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

Я пытался использовать статический

Класс

public static class Inventario
{
    public static int FiltroEtiquetas;

    public static int NumLocalizacoes;

    public static void GetInventario()
    {

    }
}

Page

protected void Page_Load(object sender, EventArgs e)
{

   txtFiltroEtiquetas.Text = Inventario.FiltroEtiquetas.ToString();
   txtNumLocalizacoes.Text = Inventario.NumLocalizacoes.ToString();
}
protected void btnSaveInventaryChanges_Click(object sender, EventArgs e)
{

   Inventario.FiltroEtiquetas = Convert.ToInt32(txtFiltroEtiquetas.Text);
   Inventario.NumLocalizacoes = Convert.ToInt32(txtNumLocalizacoes.Text);
   Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "ShowToast('OK', 'topCenter','success', 'Alterações Guardadas com sucesso.', '2000')", true);
 }

Всякий раз, когда я открываю модальное значение, оно всегда равно 0, изменения не сохраняются

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я думаю, что в этом сценарии использовать статическую переменную не очень хорошая идея.Я думаю, вам лучше использовать переменную приложения.

0 голосов
/ 22 января 2019

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

Вам необходимо удалить код из page_load или применить к нему некоторое условие.

Вы можете реализовать что-то вроде этого:

protected void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack)
   {
      txtFiltroEtiquetas.Text = Inventario.FiltroEtiquetas.ToString();
      txtNumLocalizacoes.Text = Inventario.NumLocalizacoes.ToString();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...