通过使用QueryString跟踪转弯

时间:2016-05-18 16:45:37

标签: c# asp.net query-string

我正在尝试制作游戏;当我单击一个按钮时,我需要使用查询字符串转到另一个页面,我需要知道单击了哪个按钮(Button1),以及单击了多少次(转动)。这是我的代码:

int Turn = 0;
protected void Button1_Click(object sender, EventArgs e) 
{
            string clickedButton = "Button1";
            Turn = Turn ++;
            Response.Redirect(string.Format("TheGame.aspx?button={0}&turn={1}", clickedButton , Turn)); 
}

但问题是,我永远不能改变,它总是保持为0.我怎么能这样做?

4 个答案:

答案 0 :(得分:2)

这是因为无论何时创建新页面Turn都设置为0。 您应该在会话中存储Turn并使用它:

public int Turn
{
    get
    {
        if (Session["Turn"] == null)
            Session["Turn"]= 0;
        return (int)Session["Turn"];
    }
    set
    {
        Session["Turn"] = value;
    }
}

答案 1 :(得分:1)

最简单的方法是使变量变为静态,

static int Turn = 0;

那就行!

答案 2 :(得分:0)

有两个原因。

首先,post-fix increment运算符在递增之前返回值,因此Turn++Turn递增为1,然后返回0.然后将该值赋值回Turn,从而撤消你的增量。只需使用

Turn++

其次,Turn正在Page - 级别声明。每次加载页面时,都会构建此页面的新实例,并将新的Turn初始化为零。

您需要在解决方案中添加某种转弯跟踪服务等级,以跟踪用户在游戏生命周期中的转换。您还需要确定游戏的概念"游戏的生命周期"映射到服务器端的抽象。

您可以继续使用查询字符串,但不是启动页面级变量,而应使用局部变量,递增,并使用新查询字符串返回新值。另一种选择是会话状态。

答案 3 :(得分:0)

" ++"运算符递增它所附加的变量。当用作这样的后缀时,它会检索现有值,然后递增变量。当用作前缀时,它会递增变量,然后检索该值。在这种情况下,它检索值" 0",然后递增转到" 1"。但是,分配然后将转回的值改为" 0"。

单独使用Turn++,或使用我将要执行的作业Turn = Turn + 1

protected void Button1_Click(object sender, EventArgs e) 
{
        string clickedButton = "Button1";
        Turn = Turn + 1;
        Response.Redirect(string.Format("TheGame.aspx?button={0}&turn={1}", 
            clickedButton , Turn)); 
}

" ++"运算符通常像这样使用:

protected void Button1_Click(object sender, EventArgs e) 
{
        string clickedButton = "Button1";
        Response.Redirect(string.Format("TheGame.aspx?button={0}&turn={1}", 
            clickedButton , ++Turn)); 
}

请注意,我使用了" ++"作为前缀,以便用于格式化字符串的值将是后增量值" 1"而不是预增量值" 0"。