中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net MVC在Controller控制器中如何實現驗證碼輸出功能

發布時間:2021-06-03 14:01:01 來源:億速云 閱讀:232 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關asp.net MVC在Controller控制器中如何實現驗證碼輸出功能的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

 asp.net mvc項目使用到驗證碼,為了讓以前的WebForm代碼能利用上代碼經過稍微的改動即可使用代碼如下:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Mvc;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace Angel.Web.Controllers
{
  public class CheckCodeController : Controller
  {
    //
    // GET: /CheckCode/
    public ActionResult Index()
    {
      this.CreateCheckCodeImage(GenerateCheckCode());
      return View();
    }
    private string GenerateCheckCode()
    {
      int number;
      char code;
      string checkCode = String.Empty;
      System.Random random = new Random();
      for (int i = 0; i < 5; i++)
      {
        number = random.Next();
        if (number % 2 == 0)
          code = (char)('0' + (char)(number % 10));
        else
          code = (char)('A' + (char)(number % 26));
        if (code == '0' || code == 'o' || code == 'L' || code == 'I')
        {
          i = i - 1;
        }
        else
        {
          checkCode += code.ToString();
        }
      }
      // Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
      Session.Contents["checkcode"] = checkCode;
      return checkCode;
    }
    private void CreateCheckCodeImage(string checkCode)
    {
      if (checkCode == null || checkCode.Trim() == String.Empty)
        return;
      System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
      Graphics g = Graphics.FromImage(image);
      try
      {
        //生成隨機生成器
        Random random = new Random();
        //清空圖片背景色
        g.Clear(Color.White);
        //畫圖片的背景噪音線
        for (int i = 0; i < 25; i++)
        {
          int x1 = random.Next(image.Width);
          int x2 = random.Next(image.Width);
          int y1 = random.Next(image.Height);
          int y2 = random.Next(image.Height);
          g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
        }
        Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
        System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
        g.DrawString(checkCode, font, brush, 2, 2);
        //畫圖片的前景噪音點
        for (int i = 0; i < 100; i++)
        {
          int x = random.Next(image.Width);
          int y = random.Next(image.Height);
          image.SetPixel(x, y, Color.FromArgb(random.Next()));
        }
        //畫圖片的邊框線
        g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        Response.ClearContent();
        Response.ContentType = "image/Gif";
        Response.BinaryWrite(ms.ToArray());
      }
      finally
      {
        g.Dispose();
        image.Dispose();
      }
    }
  }
}

  最后別忘了session的獲取設置,需要在Global.asax.cs文件中新增如下代碼:

/// <summary>
/// MVC為了獲取session參數
/// </summary>
public override void Init()
{
  PostAuthenticateRequest += (s, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
  base.Init();
}
void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
  HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}

html頁面代碼:

html代碼

<img name="img1" id="img1"  alt="單擊圖片刷新驗證碼" src="CheckCode/Index" <br>onclick="JavaSccript:reloadImage('CheckCode/Index');" /><br><script type="text/javascript">
function reloadImage(url) {
document.getElementById("img1").src = url + '?abc=' + Math.random();
}
  </script>

感謝各位的閱讀!關于“asp.net MVC在Controller控制器中如何實現驗證碼輸出功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东乌珠穆沁旗| 乌鲁木齐市| 临朐县| 庄浪县| 陇川县| 瑞丽市| 阳西县| 泾阳县| 通城县| 右玉县| 淄博市| 金昌市| 榆社县| 延庆县| 遂昌县| 南通市| 康平县| 故城县| 深州市| 渭源县| 南投县| 玉龙| 石嘴山市| 阜康市| 晋宁县| 通江县| 同江市| 乌鲁木齐县| 秦安县| 南通市| 贞丰县| 获嘉县| 比如县| 丹东市| 江陵县| 聂拉木县| 亳州市| 紫云| 饶阳县| 安吉县| 恩平市|