我正在尝试制作验证码。这是我在模型中生成验证码的代码。
private static Random random = new Random();
public override void ExecuteResult(ControllerContext context)
{
Bitmap bmp = new Bitmap(100, 30);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.DeepPink);
string randomString = GetCaptchaString(6);
context.HttpContext.Session["captchastring"] = randomString;
g.DrawString(randomString, new Font(FontFamily.GenericSansSerif, 17,FontStyle.Italic), new SolidBrush(Color.WhiteSmoke), 2, 2);
HttpResponseBase response = context.HttpContext.Response;
response.ContentType = "image/jpeg";
bmp.Save(response.OutputStream, ImageFormat.Jpeg);
bmp.Dispose();
}
public string GetCaptchaString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
验证码视图代码如下
@using (Html.BeginForm("index", "home"))
{
<p><img src="/home/ShowCaptchaImage" id="imgCaptchaShow" /></p>`
<p>Please enter the string as shown above:</p>`
<p>@Html.TextBox("CaptchaText")</p><a href="#" onclick="javascript:RefreshCaptcha();">Refresh</a>`
<p><input type="submit" value="Submit" /></p>
}
我想在刷新链接上再次生成验证码而不刷新页面。