为多个用户分隔网页

时间:2014-01-13 14:52:09

标签: c# .net

我建立了一个拥有游戏的网站。在游戏中,用户需要看到带有数字的标签,并在文本框中写入正确的数字并按下检查。当我用2个浏览器(chrome和iexplorer)打开网站时,会发生的是从第二个浏览器继续播放。

static int i = 0;
protected void Page_Load(object sender, EventArgs e)
{
    number_lbl.Text = i + "";
}

protected void check_Click(object sender, EventArgs e)
{
    if (Convert.ToInt16(textbox.Text) == i)
        right_wrong_lbl.Text = "right";
    else
        right_wrong_lbl.Text = "wrong";
    check.Enabled = false;
    next.Visible = true;
}

protected void next_Click(object sender, EventArgs e)
{
    i++;
    check.Enabled = true;
    next.Visible = false;
    number_lbl.Text = i + "";
    textbox.Text = "";
}

例如,我在chrome中打开网站并看到“0”,我写“0”并得到“正确”并点击“下一步”。我再试一次,看“1”,写“1”,然后“右”,点击“下一步”。现在我在iexplorer中打开网站,看到“0”,写“0”并得到“错误”,点击“下一步”并看到“4”。如果我在iexplorer中写了“3”,我就会“正确”。 我怎么能这样做,每个玩家的页面将在其他玩家的页面中独立?

2 个答案:

答案 0 :(得分:3)

在减速之前

static关键字导致了此问题。 将i的值存储在会话中。

负载:

if(Session["Number"]) == null)
{
     Session["Number"] = 0;
     number_lbl.Text = Session["Number"].ToString();
}

并用Session["Number"]替换每次出现的i。

答案 1 :(得分:0)

您的用户不在静态环境中。 尝试将static int i更改为int i。

编辑:

抱歉,我的回答太快了。

如此处的另一个答案所述,您可以将其存储为会话变量: 试试这个(我现在没办法测试它,但它应该有效):

int i 
{
    get
    {
       if(Session["ClickCount"] == null)
       {
          Session["ClickCount"] = 0;
       }
       return int.Parse(Session["ClickCount"].ToString());
    }
    set
    {
       Session["ClickCount"] = value;
    }
}    

protected void Page_Load(object sender, EventArgs e)
{
    number_lbl.Text = i + "";
}

protected void check_Click(object sender, EventArgs e)
{
    if (Convert.ToInt16(textbox.Text) == i)
        right_wrong_lbl.Text = "right";
    else
        right_wrong_lbl.Text = "wrong";
    check.Enabled = false;
    next.Visible = true;
}

protected void next_Click(object sender, EventArgs e)
{
    i++;
    check.Enabled = true;
    next.Visible = false;
    number_lbl.Text = i + "";
    textbox.Text = "";
}