建立一个空网站,在设计界面工具箱中拖入一个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>

界面效果:

02-17 位图验证码(一般处理程序)+AJAX的更多相关文章

  1. asp.net的验证码插件及方法、ashx验证码一般处理程序

    需要引入一个ashx的一般处理程序! 把这个程序在前台当作一个图片使用就可以! 前台代码: <td> <img title="看不清?" style=" ...

  2. WebForm+一般处理程序+Ajax聊天

    #### 很容易理解 插入数据 到数据库 在使用 setInterval() 读取数据 显示在 页面中 好了 不废话 直接上代码 不会的 可以加我 微信 Jth11163## 效果图片 ![在这里插入 ...

  3. 一般处理程序,ajax

    一般处理程序调用session: 在.aspx.cs页中读写Session都是Session["***"]就可以获取或者写入.但是在一般处理程序也就是ashx页面中,再这样写的话, ...

  4. 2016.02.17 JS DOM编程艺术 第四五六章

    看完这三章内容,集中精力,加快速度.

  5. 2019.02.17 spoj Query on a tree VII(链分治)

    传送门 跟QTREE6QTREE6QTREE6神似,改成了求连通块里的最大值. 于是我们对每条链开一个heapheapheap维护一下即可. MDMDMD终于1A1A1A链分治了. 代码: #incl ...

  6. 2019.02.17 spoj Query on a tree VI(链分治)

    传送门 题意简述:给你一棵nnn个黑白点的树,支持改一个点的颜色,询问跟某个点颜色相同的连通块大小. 思路: 还是链分治 233 记fi,0/1f_{i,0/1}fi,0/1​表示iii的所有颜色为0 ...

  7. 2019.02.17 spoj Query on a tree V(链分治)

    传送门 题意简述: 给你一棵nnn个黑白点的树,初始全是黑点. 现在支持给一个点换颜色或者求整颗树中离某个点最近的白点跟这个点的距离. 思路: 考虑链分治维护答案,每个链顶用一个堆来维护答案,然后对于 ...

  8. NO.012-2018.02.17《题都城南庄》唐代:崔护

    题都城南庄_古诗文网 题都城南庄 唐代:崔护 去年今日此门中,人面桃花相映红.去年春天,就在这扇门里,姑娘脸庞,相映鲜艳桃花.人面:指姑娘的脸.第三句中“人面”指代姑娘. 人面不知何处去,桃花依旧笑春 ...

  9. ajax原理,验证码生成原理

    什么是ajax AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML 指一种创建交互式网页应用的网页开发技术.   不是指一种单一的 ...

随机推荐

  1. Oracle归档模式与非归档模式设置

    (转自:http://www.cnblogs.com/spatial/archive/2009/08/01/1536429.html) Oracle的日志归档模式可以有效的防止instance和dis ...

  2. python基础之模块二

    六 logging模块 6.1 函数式简单配置 import logging #导入模块 logging.debug('debug message') #调试消息 logging.debug('inf ...

  3. Dockerfile 模版

    最近一直在用docker,总结了一个靠谱的模版,分享给大家. From ubuntu:14.04 MAINTAINER pidong.li@genetronhealth.com RUN echo de ...

  4. 类Flask实现前后端交互之代码聊天室

    前言 框架 项目目录及各自功能 流程图 后端 server backend exector 前端 ajax 页面更新 演示 简易应答模式 代理模式处理外部请求 后台日志 总结 前言 这两天老是做梦,全 ...

  5. Delphi XE4 Upate1 更新升级记录.

    一直没时间,这两天折腾了一下 升级了.  其实也可能修了老bug 引入新bug. 呵呵. 看看Emb 都修了什么吧.  我干脆是重新安装的. 虽然官方也有一个单独的update.exe.  从这些bu ...

  6. golang日期转字符串,仿照C#中的日期格式结构体

    1.日期格式集合.日期转字符串方法 package util import ( "strings" "time" ) //日期格式:模仿java中的结构体 ty ...

  7. python tricks —— datetime 删除日期中的前导 0

    >> from datetime import datetime >> now = datetime.now() >> now.strftime('%Y-%m-%d ...

  8. 解放内存之搭建自己的 R Server

    学校的课五门有四门需要跑R程序,有一些长长长的代码实在是占用了太多的内存,果断决定搭个R的服务器放着自己跑. 愉快的是,R studio server 的搭建真心简单快捷~这个从前被我忽略的东东终于排 ...

  9. python3 chromeDriver 安装与配置

    1. 准备工作 在这之前请确保已经正确安装好了Chrome浏览器并可以正常运行,安装过程不再赘述. 2. 查看版本 点击Chrome菜单"帮助"→"关于Google Ch ...

  10. Stars

    Astronomers often examine star maps where stars are represented by points on a plane and each star h ...