数组不会保存在会话变量中

时间:2017-11-20 18:37:28

标签: c# asp.net

试图制作一个刽子手游戏,我几乎就在那里。当我输入txtBokstavGjett时,按下按钮时阵列不会保存。即使我有losning[]的会话变量。

我真的不知道该怎么做,所以任何帮助都非常感谢。 变量名是挪威语,但这不重要。

public partial class _Default : System.Web.UI.Page
{
    int antallForsok = 0;
    string forsokteBokstaver;
    char[] losning = new char[8];

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["antallForsok"] != null)
        {
            antallForsok = (int)Session["antallForsok"];
        }
        labForsok.Text = Convert.ToString(antallForsok);

        if (Session["forsokteBokstaver"] != null)
        {
            forsokteBokstaver = (string)Session["forsokteBokstaver"];
        }
        if (Session["losning"] != null)
        {
            losning = (char[])Session["losning"];
        }
        if (antallForsok == 0)
        {
            for (int k = 0; k < losning.Length; k++)
            {
                losning[k] = '_';
                labRes.Text += " " + losning[k] + " ";
                labTestBox.Text += "" + losning[k] + " ";
            }
        }
    }
    protected void btnKnapp_Click(object sender, EventArgs e)
    {
        labRes.Text = "";
        labTestBox.Text = "";
        string losningOrd = "appelsin";
        char brukerGjett = Convert.ToChar(txtBokstavGjett.Text);
        char[] bokstaver = losningOrd.ToCharArray();
        losning = new char[bokstaver.Length];
        for (int i = 0; i <bokstaver.Length; i++)
        {
            if (brukerGjett == bokstaver[i])
            {
                losning[i] = bokstaver[i];
            }
            else if (!(brukerGjett == bokstaver[i]))
            {

            }
            forsokteBokstaver = brukerGjett.ToString();
            labRes.Text += "" + losning[i];
            labTestBox.Text += " " + losning[i];

        }
        txtBokstavGjett.Text = "";
        antallForsok++;
        labForsoktBokstav.Text += forsokteBokstaver;
    }   
    protected void Page_Unload (object sender, EventArgs e)
    {
        Session["antallForsok"] = antallForsok;
        Session["forsokteBokstaver"] = forsokteBokstaver;
        Session["losning"] = losning;
    }
}

2 个答案:

答案 0 :(得分:1)

从Session变量恢复数组不应该有任何问题,但是你有一行&#39; losning = new char [...]&#39;那是再次擦掉它。你应该只能删除该行。

答案 1 :(得分:0)

在页面已经在浏览器中发送和呈现之后,正在调用Page_Unload方法。在生命周期中为了将值保存到Session,为时已晚。

为什么不在计算时简单地处理存储这些值?

protected void btnKnapp_Click(object sender, EventArgs e)
{
    labRes.Text = "";
    labTestBox.Text = "";
    string losningOrd = "appelsin";
    char brukerGjett = Convert.ToChar(txtBokstavGjett.Text);
    char[] bokstaver = losningOrd.ToCharArray();
    losning = new char[bokstaver.Length];
    for (int i = 0; i <bokstaver.Length; i++)
    {
        if (brukerGjett == bokstaver[i])
        {
            losning[i] = bokstaver[i];
        }
        else if (!(brukerGjett == bokstaver[i]))
        {

        }
        forsokteBokstaver = brukerGjett.ToString();
        labRes.Text += "" + losning[i];
        labTestBox.Text += " " + losning[i];

    }
    txtBokstavGjett.Text = "";
    antallForsok++;
    labForsoktBokstav.Text += forsokteBokstaver;

    Session["antallForsok"] = antallForsok;
    Session["forsokteBokstaver"] = forsokteBokstaver;
    Session["losning"] = losning;
}