日期:2014-05-17  浏览次数:20733 次

[求助]ASP.NET中简单的网页数字验证问题
namespace MyDesign
{
  public partial class Login : System.Web.UI.Page
  {
  protected void Page_Load(object sender, EventArgs e)
  {
  this.check_Num.Text = rand_checkNum();
  }

  protected string rand_checkNum() 
  {
  Random r = new Random();
  int[] num = new int[4];
  int n;
  string randNum="";
  for (int i = 0; i < 4; i++)
  {
  n= r.Next(0,9);
  num[i] = n;
  }
  foreach (int m in num)
  {
  randNum += m.ToString();
 
  }
  return randNum;
  }
   
  protected void btn_OK_Click(object sender, EventArgs e)
  {
  if (this.txtCheck_Num.Text !=this.check_Num.Text)
  {
  errCheck.Text = "很遗憾!";
  }
  else
  {
  errCheck.Text = "输入正确!";
  }
  }
  }

 
}
后台代码如上,启动浏览器查看,效果正常。
但是在点button的时候。一直无法正确验证。无论输入验证数跟生成的随机数是否一致,都显示“很遗憾”。是哪里出问题了呢?
初学ASP.NET,想做一个B/S系统。希望各位大神不吝赐教!

------解决方案--------------------
改为:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
this.check_Num.Text = rand_checkNum();
}

------解决方案--------------------
因为单击按钮后,先会执行Page_Load,重新生成了一个验证码,然后再执行按钮的Click方法。