求代码片段,主要是输出验证图片的方法 ,生成验证码的到不需要

解决方案 »

  1.   

    <IMG id="imgSure" alt="点击重新获取验证码" style="cursor:hand" onclick="getValidate();" src="B2C/CreateValidateCode"> CreateValidateCode为方法名 namespace Mvc_B2C.Models.BLL
    {
        public class Commom
        {
            //生成随机验证码字符串
            public static string CreateVildateString(int length)
            {
                //设置允许出现的字符
                string chars = "abcdefjhigklmnopqrstuvwxyzABCDEFJHIGKLMNOPQRSTUVWXYZ1234567890";            Random r = new Random(DateTime.Now.Millisecond);
                //随机字符串
                string ValidateString = "";
                for (int i = 0; i < length; i++)
                {
                    ValidateString += chars[r.Next(chars.Length)];
                }
                return ValidateString;
                
            }        public static byte[] CreateValidateCode(string validateCode)
            { 
                //设置场景
                Bitmap bmp=new Bitmap(validateCode.Length*12,22);
                //获取绘图对象
                Graphics g = Graphics.FromImage(bmp);
                g.Clear(Color.White);
                //设置字体
                Font f=new Font("Arial",12,FontStyle.Bold|FontStyle.Italic);
                //设置渐变矩形
                Rectangle r=new Rectangle(0,0,bmp.Width,bmp.Height);
                //设置渐变刷子
                LinearGradientBrush b=new LinearGradientBrush(r,Color.Red,Color.Blue,1.2f,true);
                //绘制干扰线
                Random rd = new Random(DateTime.Now.Millisecond);
                Pen pen = new Pen(Color.Silver);
                for (int i = 0; i < 25; i++)
                {
                    int StartX = rd.Next(bmp.Width);
                    int StartY = rd.Next(bmp.Height);
                    int EndX = rd.Next(bmp.Width);
                    int EndY = rd.Next(bmp.Height);
                    g.DrawLine(pen,StartX,StartY,EndX,EndY);
                }
                //绘制干扰点
                for (int i = 0; i < 100; i++)
                {
                    int x = rd.Next(bmp.Width);
                    int y = rd.Next(bmp.Height);
                    int red = rd.Next(256);
                    int green = rd.Next(256);
                    int blue = rd.Next(256);
                    bmp.SetPixel(x,y,Color.FromArgb(red,green,blue));
                }
                //绘制验证图片
                g.DrawString(validateCode, f, b, 3, 2);            MemoryStream ms = new MemoryStream();
                bmp.Save(ms,ImageFormat.Jpeg);
                bmp.Dispose();
                return ms.ToArray();
            }
        }
    }
      

  2.   

    View:    <script src="../../Scripts/jquery-1.3.2.js" type="text/javascript"></script>    <script type="text/javascript">
            $(document).ready(function() {
                $.post("/ControllerName/ActionName",
               null,
               function(result) {
                   if (result) {
                       $('image').src = result.ImageURL;
                   }
               },
               "json");
            });
        </script>    <div>
            <img src="" id="image" alt="" />
        </div>Controller:        [AcceptVerbs(HttpVerbs.Post), ActionName("ActionName")]
            public ActionResult ActionName()
            {
                //获取验证码生成页面地址
                  string strURL="xxxxxxxx";
                return this.Json(
                    new
                    {
                        ImageURL = strURL
                    });
            }
    把ActionName改成你的Action名试一下,我没试,大概是这个思路
      

  3.   

    通过ajax方法调用C中的action方法,获取验证码页面地址(一般都是aspx页面),然后通过json返回,在ajax返回方法中为页面上的img控件的src赋值。刷新验证码可以把$.post封装成一个方法,刷新的时候去调用
      

  4.   

    =============================前台代码======================
    //js代码 点击更换验证码
    <script type="text/javascript">
    function reloadcode(){ 
     var verify=document.getElementById("yzm");
     verify.setAttribute('src','CreateCode.aspx');

    </script>
    //验证码图片
    <img id="yzm" src="CreateCode.aspx" alt="点击更换验证码" onclick="reloadcode();"/>==========================后台代码====================
     //验证码验证
                string code = Session["CreateCode"].ToString();//生产验证码是给Session["CreateCode"].赋值            if (this.txtYzm.Text!= code)
                    Page.RegisterStartupScript("", "<script language=javascript>alert('验证码输入错误,请重新输入!');</script>");