下面是一个完整的mvc controller类

 public class CodeController : Controller
{
private const string CODE = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//验证码字符池
private const int COUNT = ;//验证码字符个数
private const int WIDTH = ;//图片宽
private const int HEIGHT = ;//图片高 // 产生验证码
private string GetCode()
{
Random r = new Random();
int length = CODE.Length;
StringBuilder sCode = new StringBuilder();
for (int i = ; i < COUNT; i++)
{
int index = r.Next(, length);
sCode.Append(CODE[index]);
}
return sCode.ToString();
} /// <summary>
/// 创建验证码图片
/// </summary>
/// <returns>图片文件</returns>
public ActionResult Code()
{
//画背景图
Bitmap bmp = new Bitmap(WIDTH, HEIGHT);//创建位图(宽,高)
Graphics g = Graphics.FromImage(bmp);//创建画布
g.FillRectangle(Brushes.LightGray, , , WIDTH, HEIGHT);//为画布填充底色(颜色,起始位置,终止位置) //画验证码
string code = this.GetCode();//取出验证码
this.Session.Add("code", code);//将当前验证码存入Session
Font f = new Font("微软雅黑", , FontStyle.Italic);//自定义文本格式(字体,字号,字形)
g.DrawString(code, f, Brushes.Black, , );//在画布上写入文本(内容,格式,颜色,起始位置) //画干扰点或线
Random r = new Random();
for (int i = ; i < ; i++)
{
Color color = Color.FromArgb(r.Next(, ), r.Next(, ), r.Next(, ));//随机颜色
Pen pen = new Pen(color);//创建线笔(颜色) int x = r.Next(, WIDTH);
int y = r.Next(, HEIGHT);
int xDir = r.Next();
int yDir = r.Next();
g.DrawLine(pen, x, y, x + xDir, y + yDir);//在画布上画短线(线笔,起始位置,终止位置)
}
ReturnResult result = new ReturnResult() { Result=true};
//向客户端输出
using (MemoryStream mStream = new MemoryStream())//创建内存流对象
{
bmp.Save(mStream, ImageFormat.Jpeg);//保存位图至内存流(内存流,格式)
byte[] data = mStream.ToArray();//将内存流转换成字节数组
return this.File(data, "application/image");//向客户端输出文件(输出内容,内容类型)
}
} }

前台中使用

           <div class="Mask_div1 clearfix">
<p class="Mask_p1 fl">验证码:</p>
<input type="text" class="Mask_text1 fl" id="codetxt" />
<img src="/code/code" id="code" class="Mask_ing fl" />
<a href="javascript:void(0)" id="change" class="Mask_a1 fl">【刷新】</a>
</div> <script>
$(function(){
$("#change").click(function () {
                var url = "/code/code?t=" + Date();
                $("#code").attr("src", url);
            }); })
 </script>

最新文章

  1. 使用automake等命令自动生成Makefile文件 (转载)
  2. 【引】objective-c,6:Autorelease Pool
  3. [AX2012 R3]关于Alerts
  4. System.Data.Entity 无法引用的问题
  5. Codeforces 106 C 多重背包
  6. PropertyGrid 控件使用方法
  7. WinForm 根据屏幕分辨率自适应
  8. Css3渐变实例Demo(一)
  9. javascript的层次
  10. EventBus通信小能手
  11. 商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现
  12. Error:Android Source Generator: [sdk] Android SDK is not specified.
  13. windows一机多装mysql,5.5+版本,8.0.11版本
  14. php 通过扫描二维码关注公众号
  15. 机器学习入门01 - 框架处理(Framing)
  16. 【爬虫】在Xpath中使用正则
  17. python基础学习11天,作业题
  18. C#中使用log4net框架做日志输出
  19. h5新增内容
  20. 学习JS的心路历程-范围Scope和提升(Hoisting)

热门文章

  1. Sql Server中常用的6个自定义函数分享
  2. 高级工程师-&gt;架构师
  3. poj 1743 Musical Theme(最长重复子串 后缀数组)
  4. linux模式切换,进程切换
  5. Qt 学习之路 2(17):文件对话框
  6. POJ1055 BULK MAILING
  7. Tinkphp 教程 一
  8. Codeforces Beta Round #87 (Div. 2 Only)-Party(DFS找树的深度)
  9. 4 Values whose Sum is 0(枚举+二分)
  10. day20 模块 collections time sys os