Visual Studios C# - 在页面刷新时重新调用类

时间:2012-04-01 21:01:39

标签: c# visual-studio

在Visual studio中,每次刷新页面时都会调用该类吗?我有以下类 - 我想在每次单击按钮时为变量添加值;

public partial class _Default : System.Web.UI.Page
{
    Random random = new Random();
    int total;
    int playerTotalValue;

    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void ranPlayer_Click(object sender, EventArgs e)
    {
        int randomNumTwo = random.Next(1, 10);
        playerTotalValue = playerTotalValue + randomNumTwo; //playerTotalValue gets reset to zero on every click
        playerTotal.Text = playerTotalValue.ToString();
    }
}
每次单击“ranPlayer”按钮时,

playerTotalValue都会重置为零,或者这就是我认为发生的事情。

3 个答案:

答案 0 :(得分:5)

HTTP无状态。这意味着它不会像在Windows窗体编程中那样保留变量中的值。因此,每当您单击按钮时,它的执行方式与初始页面加载时的加载方式相同。可是等等 !。您在文本框中有值。因此,您可以从那里读取值并将其存储在变量中。

    protected void ranPlayer_Click(object sender, EventArgs e)
    {
        playerTotalValue =0;
        if(!String.IsNullOrEmpty(playerTotal.Text))
        {
          playerTotalValue =Convert.ToInt32(playerTotal.Text);
        }
        int randomNumTwo = random.Next(1, 10);
        playerTotalValue = playerTotalValue + randomNumTwo; //playerTotalValue gets reset to zero on every click
        playerTotal.Text = playerTotalValue.ToString();
     }

答案 1 :(得分:2)

此实例的持续时间是请求。之后它被丢弃。每个请求都将使用单独的对象。

您需要在请求之间保留的任何状态必须是请求的一部分(例如http表单字段或cookie),或者保存在服务器(会话状态)。

是的:playerTotalValue在每个请求开始时为0。

答案 2 :(得分:0)

我会创建一个属性,将该值存储在ViewState中,以便在回发时保留该值。