在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都会重置为零,或者这就是我认为发生的事情。
答案 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中,以便在回发时保留该值。