一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

asp.net mvc验证码类怎么用 mvc验证码类使用教程

时间:2016-12-30 编辑:简简单单 来源:一聚教程网

验证码

 代码如下 复制代码
namespaceQJW.VerifyCode
{
  //用法:
  //public FileContentResult CreateValidate()
  //{
  //  ValidateCode vCode = new ValidateCode();
  //  string code = vCode.CreateValidateCode(5);
  //  Session["ValidateCode"] = code;
  //  byte[] bytes = vCode.CreateValidateGraphic(code);
  //  return File(bytes, "image/JPEG");
  //}
 
 
  publicclassValidateCode
  {
    publicValidateCode()
    {
    }
    ///
    /// 验证码的最大长度
    ///
    publicintMaxLength
    {
      get{return10; }
    }
    ///
    /// 验证码的最小长度
    ///
    publicintMinLength
    {
      get{return1; }
    }
    ///
    /// 生成验证码
    ///
    /// 指定验证码的长度
    ///
    publicstringCreateValidateCode(intlength)
    {
      int[] randMembers =newint[length];
      int[] validateNums =newint[length];
      stringvalidateNumberStr ="";
      //生成起始序列值
      intseekSeek =unchecked((int)DateTime.Now.Ticks);
      Random seekRand =newRandom(seekSeek);
      intbeginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
      int[] seeks =newint[length];
      for(inti = 0; i < length; i++)
      {
        beginSeek += 10000;
        seeks[i] = beginSeek;
      }
      //生成随机数字
      for(inti = 0; i < length; i++)
      {
        Random rand =newRandom(seeks[i]);
        intpownum = 1 * (int)Math.Pow(10, length);
        randMembers[i] = rand.Next(pownum, Int32.MaxValue);
      }
      //抽取随机数字
      for(inti = 0; i < length; i++)
      {
        stringnumStr = randMembers[i].ToString();
        intnumLength = numStr.Length;
        Random rand =newRandom();
        intnumPosition = rand.Next(0, numLength - 1);
        validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
      }
      //生成验证码
      for(inti = 0; i < length; i++)
      {
        validateNumberStr += validateNums[i].ToString();
      }
      returnvalidateNumberStr;
    }
    ///
    /// 创建验证码的图片
    ///
    /// 要输出到的page对象
    /// 验证码
    publicbyte[] CreateValidateGraphic(stringvalidateCode)
    {
      Bitmap image =newBitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);
      Graphics g = Graphics.FromImage(image);
      try
      {
        //生成随机生成器
        Random random =newRandom();
        //清空图片背景色
        g.Clear(Color.White);
        //画图片的干扰线
        for(inti = 0; i < 25; i++)
        {
          intx1 = random.Next(image.Width);
          intx2 = random.Next(image.Width);
          inty1 = random.Next(image.Height);
          inty2 = random.Next(image.Height);
          g.DrawLine(newPen(Color.Silver), x1, y1, x2, y2);
        }
        Font font =newFont("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
        LinearGradientBrush brush =newLinearGradientBrush(newRectangle(0, 0, image.Width, image.Height),
         Color.Blue, Color.DarkRed, 1.2f,true);
        g.DrawString(validateCode, font, brush, 3, 2);
        //画图片的前景干扰点
        for(inti = 0; i < 100; i++)
        {
          intx = random.Next(image.Width);
          inty = random.Next(image.Height);
          image.SetPixel(x, y, Color.FromArgb(random.Next()));
        }
        //画图片的边框线
        g.DrawRectangle(newPen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
        //保存图片数据
        MemoryStream stream =newMemoryStream();
        image.Save(stream, ImageFormat.Jpeg);
        //输出图片流
        returnstream.ToArray();
      }
      finally
      {
        g.Dispose();
        image.Dispose();
      }
    }
    ///
    /// 得到验证码图片的长度
    ///
    /// 验证码的长度
    ///
    publicstaticintGetImageWidth(intvalidateNumLength)
    {
      return(int)(validateNumLength * 12.0);
    }
    ///
    /// 得到验证码的高度
    ///
    ///
    publicstaticdoubleGetImageHeight()
    {
      return22.5;
    }
  }
}
 

使用方法

 
 代码如下 复制代码
publicFileContentResult CreateValidate()
{
  ValidateCode vCode =newValidateCode();
  stringcode = vCode.CreateValidateCode(5);
  Session["ValidateCode"] = code;
  byte[] bytes = vCode.CreateValidateGraphic(code);
 
  returnFile(bytes,"image/JPEG");
}
 

HTML

 代码如下 复制代码
javascript:;" onclick="reloadcode();"> 

视图JS 

 
 代码如下 复制代码
functionreloadcode() {
    varverify = document.getElementById('safecode');
    verify.setAttribute('src','/common/CreateValidate?'+ Math.random());
  }
 

热门栏目