本代码改自Nick Berardi的代码 ,Nick Berardi原版的代码是基于asp.net mvc preview2的,而且安全性和功能上都有问题,目前修改出的版本封装的也不是很好,但用起来也不算麻烦,希望能对有需要的朋友有些帮助,具体代码和演示见附件。
使用
1.controller:
public ActionResult Index() { return View(); } [CaptchaValidation("captcha")] public ActionResult Test(bool? captchaValid) { if (captchaValid == false) { ViewData["Message"] = "验证码输入有误"; } else { ViewData["Message"] = "提交正确"; //执行完毕务必清理验证码缓存。 CaptchaImageHelper.RemoveCurrentCapcha(this.HttpContext); } return View(); }
2.view
<form method='post' action='<%=new UrlHelper(ViewContext).Action("Test", "Home")%>'> <% string guid = System.Guid.NewGuid().ToString("N"); %> <%= Html.CaptchaImage(guid, "captcha-image1", 40, 140)%> <%= Html.CaptchaTextBox("captcha")%> <a href="#" οnclick="reloadCaptchaImage();return false;">看不清,换一张</a> <script language="javascript"> var captchaImageSrc = null; function reloadCaptchaImage() { img = document.getElementById('captcha-image1'); if (captchaImageSrc == null) captchaImageSrc = img.src; img.src = captchaImageSrc + "&" + (new Date()).getTime(); } </script> <input type="submit" name="submit" value="提交" /> </form>