久違ASP.NET MVC,記錄一下For MVC的驗証碼產生器。

Model

using Webdiyer.WebControls.Mvc;

public class CheckModel
{
    [Required(ErrorMessage = "*必填")]
    [Display(Name = "驗證碼")]
    public string CaptchaValue { get; set; }
}

View

@using Webdiyer.WebControls.Mvc;

@Html.LabelFor(m => m.CaptchaValue)
@Html.TextBoxFor(m => m.CaptchaValue)
@Html.MvcCaptcha(new MvcCaptchaOptions { 
                   ValidationInputBoxId = "CaptchaValue",
                   CaptchaImageContainerId = "captchaImage" })
@Html.ValidationMessageFor(m => m.CaptchaValue)

Controller

using Webdiyer.WebControls.Mvc;

[HttpPost]
[ValidateMvcCaptcha("CaptchaValue")]
public ActionResult Check(CheckModel model)
{
    if (ModelState.IsValid)
    {
        //Do Something
    }
    return View(model);
}

MvcCaptchaOptions 類別

表示包含MvcCaptcha驗證碼控制項相關選項和設置的物件。
公共屬性:
Width:獲取或設置驗證碼圖片的寬度。
語法(C#):public int Width {get;set;}
屬性值:System.Int32。
備註:單位為象素,預設值為160,最小值為TextLength屬性值*18。


Height:獲取或設置驗證碼圖片的高度。
語法(C#):public int Height {get;set;}
屬性值:System.Int32。
備註:單位為象素,預設值為40,最小值為32,低於32時將默認為32。

TextLength:獲取或設置驗證碼文本個數。
語法(C#):public int TextLength {get;set;}
屬性值:System.Int32。
備註:預設值為4,最小值為3,低於3時將默認為3。

TextChars:獲取或設置用於生成驗證碼文本的字元。
語法(C#):public string TextChars {get;set;}
屬性值:System.String。
備註:預設值為“ACDEFGHJKLMNPQRSTUVWXYZ2346789”,之所以未包含B、I、O三個字母和0、1、5三個數位是因為這些字元或數位相似度太高(O與0、B與8、I與1、5與S等),不容易辨別。
若該屬性值設置的字串總長度小於3時,將使用預設值。

FontWarp:獲取或設置驗證碼圖片文本扭曲程度。
語法(C#):public Level FontWarp {get;set;}
屬性值:Webdiyer.WebControls.Mvc.Level。
備註:預設值為Level.Medium。

BackgroundNoise:獲取或設置驗證碼圖片背景雜色級別。
語法(C#):public Level BackgroundNoise {get;set;}
屬性值:Webdiyer.WebControls.Mvc.Level。
備註:預設值為Level.Low。

LineNoise:獲取或設置驗證碼圖片干擾線條級別。
語法(C#):public Level LineNoise {get;set;}
屬性值:Webdiyer.WebControls.Mvc.Level。
備註:預設值為Level.Low。

ValidationInputBoxId:獲取或設置驗證碼輸入文字方塊的用戶端Id。
語法(C#):public string ValidationInputBoxId {get;set;}
屬性值:System.String。
備註:當DelayLoad屬性設為true時,必須指定該值,驗證碼控制項通過監視驗證碼輸入文字方塊的啟動狀態來決定是否生成並載入圖片,如果該值對應的文字方塊不存在,則驗證碼圖片無法生成並載入。

CaptchaImageContainerId:獲取或設置包含驗證碼圖片控制項的父容器的用戶端Id。
語法(C#):public string CaptchaImageContainerId {get;set;}
屬性值:System.String。
備註:當DelayLoad屬性設為true時,必須指定該值,當驗證碼文本輸入框被啟動(獲得焦點)時,驗證碼控制項將通過Ajax載入驗證碼圖片並將圖片顯示在該值對應的容器元素中,如果該元素不存在,則驗證碼圖片無法顯示。

ReloadLinkText:獲取或設置重新載入驗證碼圖片超連結的文本。
語法(C#):public string ReloadLinkText {get;set;}
屬性值:System.String。
備註:預設值為“換一張”。

DelayLoad:獲取或設置一個值,該值指示驗證碼圖片是否通過Ajax延遲載入。
語法(C#):public bool DelayLoad {get;set;}
屬性值:System.String。
備註:預設值為false,當設為true時,驗證碼圖片只在驗證碼輸入文字方塊被啟動(獲得焦點)時才生成並通過Ajax方式載入,對於緩存的頁面,則必須將此值設為true,否則驗證碼圖片也會被一同緩存而失去驗證作用。
當該值設為true時,需注意如下事項:
• 必須引入jQuery腳本庫;
• 必須指定ValidationInputBoxId和CaptchaImageContainerId的值;
• MvcCaptchaOptions的設置中,TextLength、TextChars、FontWarp、LineNoise和BackgroundNoise將不起作用且一律使用預設值,若需設置這些屬性的值,必須在web.config中添加自訂配置節來實現;

使用第三方組件:http://www.webdiyer.com/Controls/MvcCaptcha

文章標籤
創作者介紹

吉米.NET

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()