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

C#随即密保重复执行,求教
随机密保:    G7--H1--C2
页面是是这样的
//产生随即数字密保
  public void sjmb()
  {

  string[] s = { "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9",
  "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9",  
  "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9",  
  "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9",  
  "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9",  
  "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9",  
  "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9",  
  "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9",  
  "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9"};

  Random rnd = new Random();
  int i1 = rnd.Next(0, s.Length - 1);
  int i2 = rnd.Next(0, s.Length - 1);
  int i3 = rnd.Next(0, s.Length - 1);
  s1 = s[i1];
  s2 = s[i2];
  s3 = s[i3];
  Lab_sjmb.Text = s1.ToString() + "--" + s2.ToString() + "--" + s3.ToString();


  }


 protected void Page_Load(object sender, EventArgs e)
  {
  sjmb();  
  }

这样页面生成的时候,就能得到一串的随机密保号,比如G7--H1--C2

然后点击登录按钮
 card.CardID = staff.Cad;
  DataSet ds3 = card.SelFindCardRandom3(s1, s2, s3);
  string mb1 = ds3.Tables[0].Rows[0][s1].ToString();
  string mb2 = ds3.Tables[0].Rows[0][s2].ToString();
  string mb3 = ds3.Tables[0].Rows[0][s3].ToString();
  string mbmm = mb1.ToString() + mb2.ToString() + mb3.ToString();
  if ( this.text_mibao.Text == mbmm)
  {
  //登录实现  
  }


问题是mbmm的值,和this.text_mibao.Text 一直不相等,应该是随机sjmb(); 又生成了一次,应该怎么改? 


------解决方案--------------------
按钮是服务端组件,点击后会引起页面重新加载,又再次执行了Page_Load,加上判断如下
C# code

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
                sjmb();   
        }
    }