C# 为什么 int 值不断重置为 0?

C# why is int value keep getting reset to 0?

目标:当我进入按钮点击方法时保持 int (professorIndex) 的值可访问 (btnUpdateAvailability_Click())

问题:值最初设置正确,然后以某种方式变为 0

我试过的方法:在 class 级别开始变量。摆脱对它的任何其他引用,包括注释掉它设置为 0

的位置

我错过了什么?

C#:

public partial class SiteMaster : MasterPage
{
        private int professorIndex;
        protected void Page_Load(object sender, EventArgs e) {
        //some stuff
        }
        
        protected void cbUpdateAvailability_Click(object sender, EventArgs e)
        {
        CheckBox cbSender = (CheckBox)sender;
        professorIndex = getProfessorIndexCB(cbSender.ClientID);
        //at this point, professorIndex is 1, which is what I want/expect
        }
        
        
        public int getProviderIndexCB(string cbSender)
        {
            //professorIndex = 0;
            switch (cbSender)
            {
                case "chkOnOff1":
                    professorIndex = 0;
                    break;
                case "chkOnOff2":
                    professorIndex = 1;  //This is the one that is triggered
                    break;
            }
            return professorIndex;
        }
        
        
        protected void btnUpdateAvailability_Click(object sender, EventArgs e)
        {
        //at this point, professorIndex is 0, no clue why. It should be one
        }
    

下面是一个简单的演示,用于存储您希望在会话中保留的值并在 PostBack 上取回它。

public int professorIndex = 0;

protected void Page_Load(object sender, EventArgs e)
{
    //check for postback
    if (!IsPostBack)
    {
        //set the index
        professorIndex = 10;

        //store the index in a session
        Session["professorIndex"] = professorIndex;
    }
}


protected void Button1_Click(object sender, EventArgs e)
{
    //check if the session exists
    if (Session["professorIndex"] != null)
    {
        //cast the session back to an int
        professorIndex = (int)Session["professorIndex"];
    }

    //show result
    Label1.Text = $"The professor index is {professorIndex}.";
}