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

本文关键字:新调用 调用 C#- Studio 刷新 Visual | 更新日期: 2023-09-27 18:29:44

在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都会重置为零,或者我认为会发生这种情况。

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

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();
     }

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

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

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

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