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('http://dh.wk163.comCheckCode/Index');"/> functionreloadImage(url){ document.getElementById("img1").src=url+'?abc='+Math.random(); }
总结
以上所述是小编给大家介绍的asp.netMVC在Controller控制器中实现验证码输出功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。