建立一个空网站,在设计界面工具箱中拖入一个TextBox工具,一个按钮,外加一个Image图片工具(充当数字、字母以图片形式)。但是这样做出来的验证码会出现一个问题,每当点击一下按钮,界面自动提交一遍,重新刷新一遍再返回,为防止整个页面被重新提交,需要加入一个UpdatePanel,只刷新当前updatePanel内的内容即可。

必须要结合AJAX来使用

界面设计好后,需要添加一个以ashx结尾的文件项,在这里面写位图随机验证码的格式等等。

 <%@ WebHandler Language="C#" Class="Code" %>

 using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Web.SessionState;
//一般处理程序要使用session,必须要继承IRequiresSessionState接口(接口就是一个空的方法),session存在于这个接口中
public class Code : IHttpHandler,IRequiresSessionState { public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "image/jpeg";
Bitmap img = new Bitmap(, );//位图,画了一个空白的图形
Graphics g = Graphics.FromImage(img);// string s = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
string str = "";
Random rand = new Random();//初始化随机数
for (int i = ; i < ; i++)
{
int start = rand.Next(); //生成一个随机的起始位置
str += s.Substring(start, ).ToString();
}
context.Session["code"] = str;//session用于传值 Font font = new Font("宋体",, FontStyle.Bold);//设置字体格式
SolidBrush brush = new SolidBrush(Color.White);
g.FillRectangle(brush, , , , );
brush.Color = Color.Red;
g.DrawString(str, font, brush, , );
img.Save(context.Response.OutputStream, ImageFormat.Jpeg);
} public bool IsReusable {
get {
return false;
}
} }
一般处理程序:有一个页面A,传递参数到一般处理程序,处理程序接收到参数,访问数据库,判断正确,跳转下一个页面,错误,跳转到另一个页面.

在aspx的Js源代码中,写function语句,确保传递参数

 <body>
<form id="form1" runat="server">
<div> <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager> </div>
<p>
&nbsp;</p> <asp:Image ID="Image1" runat="server" ImageUrl="~/Code.ashx" /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="失败"></asp:Label>
</form>
</body>
</html>
<script>
//js方法
function changeimg()
{
var img = document.getElementById("Image1");
img.src = "Code.ashx?1=" + Math.random();//使用母版页之后,自己写的ID和JS生成的ID会不一样,需要手动更改ID(方法1)
}
</script>
//方法2:嵌生成之后的ID
<script>
function changeimg()
{
var img = document.getElementById("<%=Image1.ClientID%>"); //使用经<% %>转译之后ID
img.src = "Code.ashx?1=" + Math.random();
}
</script>

界面效果:

最新文章

  1. 吐槽贴:百度地图 api 封装 的实用功能 [源码下载]
  2. 线程的创建pthread_create.c
  3. [GodLove]Wine93 Tarining Round #2
  4. Sort List
  5. 【转】 Update和FixedUpdate的区别
  6. [OpenGL ES 03]3D变换:模型,视图,投影与Viewport
  7. delphi回调函数
  8. node-webkit
  9. 关于uC/OS的简单学习(转)
  10. LDA-线性判别分析(一)
  11. java学习——abstract 和 final
  12. post跨域请求
  13. Activtiy完全解析(三、View的显示过程measure、layout、draw)
  14. asp.net core 学习资料整理
  15. [Swift]LeetCode803. 打砖块 | Bricks Falling When Hit
  16. C#基础知识之反射
  17. 高性能Nginx服务器-负载均衡
  18. 概率分布之间的推导关系 | Univariate Distribution Relationships
  19. 编写一个漂亮的网站 第一课堂 基于vs编辑
  20. Centos7 设置静态IP后重启网络服务出错

热门文章

  1. static-静态类型
  2. python基础之递归,声明式编程,面向对象(一)
  3. FLASH动作脚本详解
  4. Java并发编程总结
  5. [置顶] Kubernetes1.7新特性:支持绕过docker,直接通过containerd管理容器
  6. Lua基础---lua字符串库函数详解,实例及正则表达式
  7. js mouseover/out 要用mouseenter/leave 代替
  8. 兼容 数组 api map代码
  9. 文件上传smart
  10. win键盘映射成mac键盘