asp.net MVC 在Controller控制器中实现验证码输出功能
asp.netmvc项目使用到验证码,为了让以前的WebForm代码能利用上代码经过稍微的改动即可使用代码如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.Web; usingSystem.Web.Mvc; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; usingSystem.Drawing; namespaceAngel.Web.Controllers { publicclassCheckCodeController:Controller { // //GET:/CheckCode/ publicActionResultIndex() { this.CreateCheckCodeImage(GenerateCheckCode()); returnView(); } privatestringGenerateCheckCode() { intnumber; charcode; stringcheckCode=String.Empty; System.Randomrandom=newRandom(); for(inti=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(newHttpCookie("CheckCode",checkCode)); Session.Contents["checkcode"]=checkCode; returncheckCode; } privatevoidCreateCheckCodeImage(stringcheckCode) { if(checkCode==null||checkCode.Trim()==String.Empty) return; System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*12.5)),22); Graphicsg=Graphics.FromImage(image); try { //生成随机生成器 Randomrandom=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); } Fontfont=newSystem.Drawing.Font("Arial",12,(System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic)); System.Drawing.Drawing2D.LinearGradientBrushbrush=newSystem.Drawing.Drawing2D.LinearGradientBrush(newRectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true); g.DrawString(checkCode,font,brush,2,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); System.IO.MemoryStreamms=newSystem.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文件中新增如下代码:
//////MVC为了获取session参数 /// publicoverridevoidInit() { PostAuthenticateRequest+=(s,e)=>HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); base.Init(); } voidMvcApplication_PostAuthenticateRequest(objectsender,EventArgse) { HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); }
html页面代码:
html代码
onclick="JavaSccript:reloadImage('https://www.haoziyuan.ccCheckCode/Index');"/> functionreloadImage(url){ document.getElementById("img1").src=url+'?abc='+Math.random(); }
总结
以上所述是小编给大家介绍的asp.netMVC在Controller控制器中实现验证码输出功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。