对于实践经验,我会生成随机数并在提交时比较它们的总和,但每次按下按钮,随机数都在变化,我怎么能停止发生这种情况?我考虑过不同的实验,但不能这样做。 这是随机数的类代码:
public class Captcha
{
int num1, num2, total;
public int N1
{
get
{
return num1;
}
}
public int N2
{
get
{
return num2;
}
}
public int Total
{
get
{
return total;
}
}
Random r = new Random();
public Captcha()
{
Random r = new Random();
num1 = r.Next(1, 11) * 10;
num2 = r.Next(1, 11);
total = num1 + num2;
}
}
现在,我在这样的Page_Load事件中使用这个:
Captcha c = new Captcha();
protected void Page_Load(object sender, EventArgs e)
{
Label2.Text = c.N1.ToString();
Label3.Text = c.N2.ToString();
}
我怎样才能完成这个?
感谢。
答案 0 :(得分:0)
由于您在页面加载事件之外创建了Captcha的对象,因此只要对页面进行调用,就会重新创建它。
您可能知道互联网是无状态的,因此每当调用页面时,都会生成新页面,从而生成新的Captcha对象。因此,您需要在某些状态管理中维护Captcha对象,例如视图状态。
您的代码应该是这样的。
Captcha c;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
c = new Captcha();
Label2.Text = c.N1.ToString();
Label3.Text = c.N2.ToString();
ViewState["c"] = c;
}
}
然后点击按钮,您需要输入将视图状态转换回" c"。这样的事情。
//button click
c = (Captcha)ViewState["c"];
if(TextBox1.Text.Equals......)
也许您需要将Captcha类标记为可序列化,因为它可能会引发错误。
我希望这会有所帮助。
此致
萨马