artdialog 异步加载页面 生成验证码
生活随笔
收集整理的這篇文章主要介紹了
artdialog 异步加载页面 生成验证码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
artdialog ?異步加載一個頁面
需求:例如現在好多網站的登錄或注冊 都是點擊彈出一個層出來 然后在上面登錄、注冊
?這個登錄可能在網站的每個頁面都會有,但是我們又不能在每個頁面都這一段html加載出來不顯示,到需要用的時候,在給shou出來,這樣做于情于理都說!不!!過!!!去!!!!!!
?
恰好以前接觸過artdialog ?不多說上代碼,(注意思維,代碼是死的方法是活,解決需求不一定非要這個方法 )
1、頁面html代碼
1 <head runat="server"> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 3 <title></title> 4 <script src="js/jquery-1.10.1.min.js"></script> 5 <script src="js/artdialog/jquery.artDialog.js"></script> 6 <script src="js/artdialog/iframeTools.js"></script> 7 <script src="js/site.js"></script> 8 <link href="js/artdialog/skins/default.css" rel="stylesheet" /> 9 </head> 10 <body> 11 <form id="form1" runat="server"> 12 <div> 13 </div> 14 </form> 15 <button id="shouurl">點我彈出層</button> 16 17 </body> 18 </html>2、js代碼
3、異步加載的頁面(筆者在這個加載出來的頁面做了一個驗證碼的功能)
1 <head runat="server"> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 3 <script src="js/jquery-1.10.1.min.js"></script> 4 <title></title> 5 <script type="text/javascript"> 6 $(document).ready(function () { 7 $("#vc").click(function () { 8 $(this).attr("src", "/Handler.ashx?act=vc"); 9 }); 10 }); 11 12 </script> 13 </head> 14 <body> 15 <form id="form1" runat="server"> 16 <div> 17 <img src="" id="vc" width="80" height="50"/> 18 </div> 19 </form> 20 </body>4、后臺代碼(驗證碼C#)
1 public void ProcessRequest(HttpContext context) 2 { 3 context.Response.ContentType = "text/plain"; 4 5 if (context.Request["act"] == "vc")//獲取查詢列表 6 { 7 GetValidateCode(); 8 } 9 } 10 public void GetValidateCode() 11 { 12 Comm.ValidateCode code = new Comm.ValidateCode(); 13 string chkCode = code.CreateValidateCode(4); 14 //Session["CheckCode"] = chkCode; 15 //Session["TimeOut"] = DateTime.Now; 16 HttpContext.Current.Response.BinaryWrite(code.CreateValidateGraphic(chkCode)); 17 }5、驗證碼生成類?
1 /// <summary> 2 /// 生成驗證碼的類 3 /// </summary> 4 public class ValidateCode 5 { 6 public ValidateCode() 7 { 8 } 9 /// <summary> 10 /// 驗證碼的最大長度 11 /// </summary> 12 public int MaxLength 13 { 14 get { return 10; } 15 } 16 /// <summary> 17 /// 驗證碼的最小長度 18 /// </summary> 19 public int MinLength 20 { 21 get { return 1; } 22 } 23 /// <summary> 24 /// 生成驗證碼 25 /// </summary> 26 /// <param name="length">指定驗證碼的長度</param> 27 /// <returns></returns> 28 public string CreateValidateCode(int length) 29 { 30 int[] randMembers = new int[length]; 31 int[] validateNums = new int[length]; 32 string validateNumberStr = ""; 33 //生成起始序列值 34 int seekSeek = unchecked((int)DateTime.Now.Ticks); 35 Random seekRand = new Random(seekSeek); 36 int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000); 37 int[] seeks = new int[length]; 38 for (int i = 0; i < length; i++) 39 { 40 beginSeek += 10000; 41 seeks[i] = beginSeek; 42 } 43 //生成隨機數字 44 for (int i = 0; i < length; i++) 45 { 46 Random rand = new Random(seeks[i]); 47 int pownum = 1 * (int)Math.Pow(10, length); 48 randMembers[i] = rand.Next(pownum, Int32.MaxValue); 49 } 50 //抽取隨機數字 51 for (int i = 0; i < length; i++) 52 { 53 string numStr = randMembers[i].ToString(); 54 int numLength = numStr.Length; 55 Random rand = new Random(); 56 int numPosition = rand.Next(0, numLength - 1); 57 validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1)); 58 } 59 //生成驗證碼 60 for (int i = 0; i < length; i++) 61 { 62 validateNumberStr += validateNums[i].ToString(); 63 } 64 return validateNumberStr; 65 } 66 /// <summary> 67 /// 創建驗證碼的圖片 68 /// </summary> 69 /// <param name="containsPage">要輸出到的page對象</param> 70 /// <param name="validateNum">驗證碼</param> 71 public byte[] CreateValidateGraphic(string validateCode) 72 { 73 Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22); 74 Graphics g = Graphics.FromImage(image); 75 try 76 { 77 //生成隨機生成器 78 Random random = new Random(); 79 //清空圖片背景色 80 g.Clear(Color.White); 81 //畫圖片的干擾線 82 for (int i = 0; i < 25; i++) 83 { 84 int x1 = random.Next(image.Width); 85 int x2 = random.Next(image.Width); 86 int y1 = random.Next(image.Height); 87 int y2 = random.Next(image.Height); 88 g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); 89 } 90 Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic)); 91 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), 92 Color.Blue, Color.DarkRed, 1.2f, true); 93 g.DrawString(validateCode, font, brush, 3, 2); 94 //畫圖片的前景干擾點 95 for (int i = 0; i < 100; i++) 96 { 97 int x = random.Next(image.Width); 98 int y = random.Next(image.Height); 99 image.SetPixel(x, y, Color.FromArgb(random.Next())); 100 } 101 //畫圖片的邊框線 102 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); 103 //保存圖片數據 104 MemoryStream stream = new MemoryStream(); 105 image.Save(stream, ImageFormat.Jpeg); 106 //輸出圖片流 107 return stream.ToArray(); 108 } 109 finally 110 { 111 g.Dispose(); 112 image.Dispose(); 113 } 114 } 115 /// <summary> 116 /// 得到驗證碼圖片的長度 117 /// </summary> 118 /// <param name="validateNumLength">驗證碼的長度</param> 119 /// <returns></returns> 120 public static int GetImageWidth(int validateNumLength) 121 { 122 return (int)(validateNumLength * 12.0); 123 } 124 /// <summary> 125 /// 得到驗證碼的高度 126 /// </summary> 127 /// <returns></returns> 128 public static double GetImageHeight() 129 { 130 return 22.5; 131 } 132 } View Code?
第4步和第5步 可以不不用只是筆者的記憶力不好 順便記錄的。。。。。。
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/nimeide/p/3789515.html
總結
以上是生活随笔為你收集整理的artdialog 异步加载页面 生成验证码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: debian清除无用的库文件(清理系统,
- 下一篇: JS URL参数传递 谷歌乱码解决