国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - asp.net 圖片驗證碼的HtmlHelper

asp.net 圖片驗證碼的HtmlHelper

2019-10-04 20:00asp.net開發(fā)網(wǎng) ASP.NET教程

一個圖片驗證碼的HtmlHelper,原來的調(diào)用代碼如下,需要的朋友可以參考下

一個圖片驗證碼的HtmlHelper,原來的調(diào)用代碼如下: 

復(fù)制代碼代碼如下:


<img id="validateCode" mailto:src='@Url.Action(%22GetValidateCode%22)'/> 
<script language="javascript" type="text/javascript"> 
$(document).ready(function () { 
$("#validateCode").bind("click", function () { 
var url = $(this).attr("src"); 
url += "?" + Math.random(); 
$(this).attr("src", url); 
}); 
}); 
</script> 


封裝成HtmlHelper后: 
@Html.ValidateCode() 
使用步驟如下: 
1.建一個驗證碼Helper 

復(fù)制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System; 
using System.Collections.Generic; 
using System.Diagnostics.CodeAnalysis; 
using System.Globalization; 
using System.Linq.Expressions; 
using System.Security.Policy; 
using System.Text; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Mvc.Resources; 
using System.Web.Routing; 
namespace MvcApplication1 

public static class ValidateCodeHelper 

private const string IdPrefix = "validateCode"; 
private const int Length = 4; 
public static MvcHtmlString ValidateCode(this HtmlHelper helper) 

return ValidateCode(helper, IdPrefix); 

public static MvcHtmlString ValidateCode(this HtmlHelper helper,string id) 

return ValidateCode(helper, id, Length); 

public static MvcHtmlString ValidateCode(this HtmlHelper helper, string id, int length) 

return ValidateCode(helper, id, length, null); 

public static MvcHtmlString ValidateCode(this HtmlHelper helper, string id, object htmlAttributes) 

return ValidateCode(helper, id, Length, htmlAttributes); 

public static MvcHtmlString ValidateCode(this HtmlHelper helper, int length, object htmlAttributes) 

return ValidateCode(helper, IdPrefix, length, htmlAttributes); 

public static MvcHtmlString ValidateCode(this HtmlHelper helper, object htmlAttributes) 

return ValidateCode(helper, 4, htmlAttributes); 

public static MvcHtmlString ValidateCode(this HtmlHelper helper, int length) 

return ValidateCode(helper,length, null); 

public static MvcHtmlString ValidateCode(this HtmlHelper helper,string id,int length,object htmlAttributes) 

string finalId = id + "_imgValidateCode"; 
var tagBuild = new TagBuilder("img"); 
tagBuild.GenerateId(finalId); 
var defaultController = ((Route)RouteTable.Routes["Default"]).Defaults["controller"] + "/"; 
var controller = HttpContext.Current.Request.Url.Segments.Length == 1 
? defaultController 
: HttpContext.Current.Request.Url.Segments[1]; 
tagBuild.MergeAttribute("src", string.Format("/{0}GetValidateCode?length={1}",controller,length)); 
tagBuild.MergeAttribute("alt", "看不清?點我試試看!"); 
tagBuild.MergeAttribute("style","cursor:pointer;"); 
tagBuild.MergeAttributes(AnonymousObjectToHtmlAttributes(htmlAttributes)); 
var sb = new StringBuilder(); 
sb.Append("<script language=\"javascript\" type=\"text/javascript\">"); 
sb.Append("$(document).ready(function () {"); 
sb.AppendFormat("$(\"#{0}\").bind(\"click\", function () {{", finalId); 
//sb.Append("$(this).attr(\"style\", \"cursor:pointer;\");"); 
sb.Append("var url = $(this).attr(\"src\");"); 
sb.Append("url += \"&\" + Math.random();"); 
sb.Append("$(this).attr(\"src\", url);"); 
sb.Append("});"); 
sb.Append("});"); 
sb.Append("</script>"); 
return MvcHtmlString.Create(tagBuild+sb.ToString()); 

public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes) 

var result = new RouteValueDictionary(); 
if (htmlAttributes != null) 

foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(htmlAttributes)) 

result.Add(property.Name.Replace('_', '-'), property.GetValue(htmlAttributes)); 


return result; 



2.生成驗證碼的代碼: 

復(fù)制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Drawing; 
using System.Drawing.Drawing2D; 
using System.IO; 
using System.Drawing.Imaging; 
namespace MvcApplication1 

public class ValidateCode 

public ValidateCode() 


/// <summary> 
/// 驗證碼的最大長度 
/// </summary> 
public int MaxLength 

get { return 10; } 

/// <summary> 
/// 驗證碼的最小長度 
/// </summary> 
public int MinLength 

get { return 1; } 

/// <summary> 
/// 生成驗證碼 
/// </summary> 
/// <param name="length">指定驗證碼的長度</param> 
/// <returns></returns> 
public string CreateValidateCode(int length) 

var randMembers = new int[length]; 
var validateNums = new int[length]; 
var validateNumberStr = ""; 
//生成起始序列值 
var seekSeek = unchecked((int)DateTime.Now.Ticks); 
var seekRand = new Random(seekSeek); 
var beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000); 
var seeks = new int[length]; 
for (var i = 0; i < length; i++) 

beginSeek += 10000; 
seeks[i] = beginSeek; 

//生成隨機(jī)數(shù)字 
for (var i = 0; i < length; i++) 

var rand = new Random(seeks[i]); 
var pownum = 1 * (int)Math.Pow(10, length); 
randMembers[i] = rand.Next(pownum, Int32.MaxValue); 

//抽取隨機(jī)數(shù)字 
for (var i = 0; i < length; i++) 

var numStr = randMembers[i].ToString(); 
var numLength = numStr.Length; 
var rand = new Random(); 
var numPosition = rand.Next(0, numLength - 1); 
validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1)); 

//生成驗證碼 
for (var i = 0; i < length; i++) 

validateNumberStr += validateNums[i].ToString(); 

return validateNumberStr; 

/// <summary> 
/// 創(chuàng)建驗證碼的圖片 
/// </summary> 
/// <param name="validateCode">驗證碼</param> 
public byte[] CreateValidateGraphic(string validateCode) 

var image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22); 
var g = Graphics.FromImage(image); 
try 

//生成隨機(jī)生成器 
var random = new Random(); 
//清空圖片背景色 
g.Clear(Color.White); 
//畫圖片的干擾線 
for (int i = 0; i < 25; i++) 

var x1 = random.Next(image.Width); 
var x2 = random.Next(image.Width); 
var y1 = random.Next(image.Height); 
var y2 = random.Next(image.Height); 
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); 

//Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic)); 
string[] fontName = { "華文新魏", "宋體", "圓體", "黑體", "隸書" }; 
var font = new Font(fontName[new Random().Next(0, validateCode.Length)], 12, (FontStyle.Bold | FontStyle.Italic)); 
var brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), 
Color.Blue, Color.DarkRed, 1.2f, true); 
g.DrawString(validateCode, font, brush, 3, 2); 
//畫圖片的前景干擾點 
for (var i = 0; i < 100; i++) 

var x = random.Next(image.Width); 
var y = random.Next(image.Height); 
image.SetPixel(x, y, Color.FromArgb(random.Next())); 

//畫圖片的邊框線 
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); 
//保存圖片數(shù)據(jù) 
var stream = new MemoryStream(); 
image.Save(stream, ImageFormat.Jpeg); 
//輸出圖片流 
return stream.ToArray(); 

finally 

g.Dispose(); 
image.Dispose(); 


/// <summary> 
/// 得到驗證碼圖片的長度 
/// </summary> 
/// <param name="validateNumLength">驗證碼的長度</param> 
/// <returns></returns> 
public static int GetImageWidth(int validateNumLength) 

return (int)(validateNumLength * 12.0); 

/// <summary> 
/// 得到驗證碼的高度 
/// </summary> 
/// <returns></returns> 
public static double GetImageHeight() 

return 23; 



3.建一個BaseController 

復(fù)制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
namespace MvcApplication1 

public class BaseController:Controller 

public ActionResult GetValidateCode(int length) 

var vCode = new ValidateCode(); 
var code = vCode.CreateValidateCode(length); 
Session["ValidateCode"] = code; 
var bytes = vCode.CreateValidateGraphic(code); 
return File(bytes, @"image/gif"); 

protected string GetValidateCode() 

return Session["ValidateCode"].ToString(); 



4.讓Controller繼承BaseController: 

復(fù)制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Security; 
namespace MvcApplication1.Controllers 

public class HomeController :BaseController 

public ActionResult Index() 

ViewBag.Message = "Welcome to ASP.NET MVC!"; 
return View(); 

public ActionResult About() 

var code = GetValidateCode(); 
return View(); 



5.頁面調(diào)用代碼: 

復(fù)制代碼代碼如下:


@using MvcApplication1 
@{ 
ViewBag.Title = "About Us"; 

<h2>About</h2> 
<p> 
Put content here. 
</p> 
@Html.ValidateCode() 


6.驗證碼的效果圖:
asp.net 圖片驗證碼的HtmlHelper
源碼可以從這里下載: ValidateCode.rar

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 五月婷婷综合网 | 国产在线一二三区 | 久久男人网 | 日韩成人中文字幕 | 亚洲电影一区二区三区 | 寡妇高潮一级片 | 一本大道久久精品 | 中文字幕在线观看一区二区三区 | 久久国产精品电影 | 国产第一夜 | 君岛美绪一区二区三区在线视频 | 久久久一 | 成人免费毛片高清视频 | 亚洲高清在线观看 | 欧美天堂一区二区三区 | 久热精品免费 | 日韩有码视频在线 | 国产深夜视频在线观看 | 欧美三级网站 | 欧美日韩一区二区三区在线观看 | 欧美一级片在线 | 中文字幕永久第一页 | 国产成人高清 | 国产精品久久久久久久久 | 成人免费xxx在线观看 | 欧洲精品视频在线观看 | 欧美大片黄 | 欧美激情一区二区 | 日韩免费在线 | 国产免费久久精品 | 国产精品视频久久久 | 久久中文字幕一区 | 在线免费成人 | 中文在线一区 | 99亚洲 | 亚洲一区二区三 | 日韩中文字幕一区二区 | 91看片淫黄大片一级在线观看 | 午夜精品影院 | 老黄网站在线观看 | 亚洲 欧美 另类 综合 偷拍 |